Zero-config, Git-powered versioning for monorepos.
bumpy is a CLI tool designed for developers who want streamlined versioning and changelog management without the overhead of complex configurations or the "ceremony" of hidden state files.
- Zero Config: Automatically detects projects using
package.jsonworkspaces,pnpm-workspace.yaml, or standardapps/*andpackages/*structures. - Granular Changelogs: Generates
CHANGELOG.mdfor each project based on its own Git history. - Conventional Intelligence: Recommends the next version based on Conventional Commits.
- Tag-based Boundaries: Uses tags like
projectName@versionto determine the history range. - Prerelease Support: Built-in support for
prepatch,preminor, andpremajor. - Workspace Changelog: Optional unified changelog at the root of the monorepo.
- Dry Run: Preview all changes before they are applied.
While tools like Changesets or Nx Release are powerful, they are optimized for specific workflows that might introduce additional complexity for simpler projects. Bumpy aims for a balance of automation and predictable interactivity.
Changesets follows a file-based workflow, requiring you to accumulate temporary markdown "intent" files to declare version bumps. This introduces a different set of trade-offs:
-
Interactive Overhead: Even for a tiny fix, Changesets often requires a repetitive sequence of questions (Major? Minor? Patch?) for each modified package. In large monorepos, this can be time-consuming.
-
Manual Documentation: It requires manual entry of change descriptions during the CLI flow, which can be redundant if your commit messages are already descriptive.
-
Limited Flexibility: It’s often difficult to quickly target specific formats like pre-releases or simply enter a custom version on the fly.
Bumpy reads your Git history directly at the moment of release.
-
Conventional Intelligence: It automatically analyzes your commits and recommends the next version (e.g., suggesting a
patchfor afixor aminorfor afeat). -
One-Step Release: Confirm pre-selected version bumps and generate instant changelogs in a single view. While Bumpy suggests the most logical choice, you can easily pick a different level or enter a custom version when needed.
Nx Release is a robust solution deeply integrated into the Nx ecosystem, enabling powerful CI automation and dependency graph analysis. However, it is designed around the Nx infrastructure and its specific architectural patterns and configuration files.
Bumpy is standalone and lightweight:
-
Zero Lock-in: It’s a standalone CLI. You don't need to adopt a new build system or add Nx-specific metadata to your packages.
-
Infrastructure Agnostic: Bumpy adapts to your project, not the other way around. It automatically discovers your packages by scanning
package.jsonworkspaces orpnpm-workspace.yaml. Whether you use Turborepo, pnpm, or npm, Bumpy works with your existing setup out-of-the-box. -
Lightweight: No heavy background daemons or complex graphs—just direct Git history analysis when you’re ready to release.
You can install it globally or as a dev dependency in your project.
# Global installation
npm install -g @antonreshetov/bumpy
# Local project installation
pnpm add -D @antonreshetov/bumpyConfiguration is optional. By default, bumpy resolves projects using your workspace configuration (e.g., pnpm-workspace.yaml or package.json workspaces).
If you need to customize this (e.g., explicitly define projects, ignore some, or enable workspace changelog), run bumpy init to generate a config file:
{
"projects": ["apps/*", "packages/*"],
"release": {
"ignore": ["apps/internal-tool"],
"changelog": {
"projectChangelogs": true,
"workspaceChangelog": false
},
"git": {
"commit": true,
"tag": true,
"push": true,
"commitMessage": "chore(release): {tag}"
}
}
}When customizing commitMessage, you can use the following placeholders:
{name}: The name of the project.{version}: The new version being released.{tag}: The full tag name (e.g.,[email protected]).
Simply run the command to start the interactive release process. It will show only projects with pending changes.
bumpySee current versions, last tags, and whether there are pending changes for each project:
bumpy statusRelease a specific project non-interactively:
bumpy release project-a --type minor --yesPreview changes without modifying any files or Git state:
bumpy release --dry-run--type <type>: Bump type (patch,minor,major,conventional,prepatch,preminor,premajor,as-is,custom).--custom <version>: Specify a custom version (used with--type custom).--yes: Skip all confirmation prompts.--dry-run: Show what would happen without making any changes.
Copyright (c) 2026-present, Anton Reshetov.