@lazy-release/cli
v0.2.2
Published
A CLI tool that automates versioning, publishing, and changelog generation with full support for multi-package repositories.
Downloads
40
Maintainers
Readme
🚀 lazy-release
Automates versioning, publishing, and creating changelogs for Node.js projects using conventional commits and supports multi-package repos.
✨ Features
- 📝 Automated Changelogs - Generate nice looking changelogs from conventional commits
- 🔖 Version Management - Automatic semantic versioning based on commit messages
- 🏷️ Git Tag Management - Automatically creates and publishes git version tags
- 📦 Package Manager Agnostic - Works with npm, pnpm, yarn, and bun
- 🤖 GitHub Integration - Automatic PR creation and GitHub releases
- 🧪 Snapshot Releases - Create preview versions for testing
- 🎯 Monorepo Support - Manage multiple packages in a single repository
📚 Documentation
⚙️ Prerequisites
- Use squash merge for pull requests.
In your repo settings:
- Go to Settings > General > Pull Requests
- Uncheck "Allow merge commits"
- Check "Allow squash merges"
- Choose "Pull request title" for default commit message
- Update workflow permissions
- Go to Settings > Actions > General
- Set "Workflow permissions" to "Read and write permissions"
- Check "Allow GitHub Actions to create and approve pull requests"
📖 Quick Start
[!NOTE]
It's recommended to runlazy-releasein a CI/CD environment (like GitHub Actions) for automated and consistent release workflows.
- Install the CLI:
pnpm i @lazy-release/cli -D- Add a script to your
package.json:
{
"scripts": {
"lazy-release": "lazy-release"
}
}- Run the CLI:
pnpm lazy-release --npm-token $NPM_TOKEN --github-token $GITHUB_TOKEN --access public🔄 Workflow
- A dev merges a Pull Request into the
mainbranch using squash merge.
[!NOTE]
The PR should be prefixed with conventional commit prefix e.g "fix", "chore", "feat", etc...
- A Release PR gets created.

A Release PR....
- Bumps the version in the package.json files
- Updates the lock files
- Creates or updates changelogs

- A release is created once the Release PR is merged. A release is...
- Publishing packages to npm (If you provide a NPM_TOKEN and the package.json does not have "private": true)
- Creates a GitHub release (If you provide a GITHUB_TOKEN)

🌟 Projects Using lazy-release
[!NOTE]
If you are usinglazy-releasein your project, please consider adding it to this list by submitting a pull request!
💡 This tool was inspired by
- Vue.js (Their nice changelogs)
- Nuxt.js (Release PRs, use of emojis etc)
