

bumpx
A powerful, modern version bumping tool with comprehensive Git integration, workspace detection, and monorepo support.
Features
- 🚀 Zero dependencies - Built using only Node.js built-ins and Bun tooling
- 📦 Semver compliant - Supports all semantic versioning release types
- 🔄 Workspace detection - Automatic workspace/monorepo detection with
recursive
enabled by default
- 🎯 Git integration - Automatic commit, tag, and push (all enabled by default)
- ⚡ Fast execution - Compiled binary for instant startup
- 🛠 Highly configurable - Config file and CLI options
- 🎨 Interactive prompts - Choose version increment interactively
- 🔧 Custom commands - Execute scripts before git operations
- 📝 Changelog generation - Automatic changelog generation enabled by default
- 🌐 Cross-platform - Works seamlessly on macOS, Linux, and Windows
Installation
bun install -g @stacksjs/bumpx
bunx @stacksjs/bumpx patch
Usage
Basic Usage
bumpx patch
bumpx minor
bumpx major
bumpx 1.2.3
bumpx prompt
Prerelease Versions
bumpx prepatch --preid beta
bumpx preminor --preid alpha
bumpx premajor --preid rc
bumpx prerelease
Git Integration
bumpx patch
bumpx patch --no-commit --no-tag --no-push
bumpx patch --commit-message "chore: release v{version}"
bumpx patch --tag-message "Release v{version}"
bumpx patch --sign
bumpx patch --no-verify
Workspace & Monorepo Support
bumpx patch
bumpx patch --no-recursive
bumpx patch --files package.json,packages/*/package.json
Advanced Options
bumpx patch --execute "bun run build" --execute "bun test"
bumpx patch --install
bumpx patch --yes
bumpx patch --ci
bumpx patch --print-commits
bumpx patch --no-git-check
bumpx patch --changelog
bumpx patch --no-changelog
bumpx patch --dry-run
CI/CD Integration
bumpx is designed to work seamlessly in CI/CD environments:
Quick CI Usage
bumpx patch --ci
bumpx patch --yes --quiet
export CI=true
bumpx patch
GitHub Actions Example
name: Release
on:
workflow_dispatch:
inputs:
release_type:
description: Release type
required: true
default: patch
type: choice
options: [patch, minor, major]
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
- uses: oven-sh/setup-bun@v1
- name: Install dependencies
run: bun install
- name: Configure git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Version bump and release
run: bunx bumpx ${{ github.event.inputs.release_type }} --ci
For more CI/CD examples and configurations, see Automation Guide.
Configuration
Create a bumpx.config.ts
file in your project root:
import { defineConfig } from '@stacksjs/bumpx'
export default defineConfig({
commit: true,
tag: true,
push: true,
sign: false,
install: false,
execute: ['bun run build', 'bun run test'],
confirm: true,
quiet: false,
recursive: true,
printCommits: true,
changelog: true,
respectGitignore: true
})
You can also use JSON configuration in package.json
:
{
"bumpx": {
"commit": true,
"tag": true,
"push": true,
"execute": ["bun run build"]
}
}
CLI Options
--preid | | ID for prerelease | |
--all | | Include all files | false |
--no-git-check | | Skip git status check | |
--commit [msg] | -c | Create git commit | true |
--no-commit | | Skip git commit | |
--tag [name] | -t | Create git tag | true |
--no-tag | | Skip git tag | |
--push | -p | Push to remote | true |
--no-push | | Skip git push | |
--sign | | Sign commits and tags | false |
--install | | Run npm install | false |
--execute | -x | Execute command | |
--recursive | -r | Bump recursively | true |
--yes | -y | Skip confirmation | false |
--quiet | -q | Quiet mode | false |
--ci | | CI mode (sets --yes --quiet) | false |
--no-verify | | Skip git hooks | false |
--ignore-scripts | | Ignore npm scripts | false |
--current-version | | Override current version | |
--print-commits | | Show recent commits | false |
Library Usage
You can also use bumpx programmatically:
import { versionBump } from '@stacksjs/bumpx'
await versionBump({
release: 'patch',
commit: true,
tag: true,
push: true,
progress: ({ event, newVersion }) => {
console.log(`${event}: ${newVersion}`)
}
})
Changelog
Please see our releases page for information on changes.
Contributing
Please see CONTRIBUTING for details.
For help or discussion:
Postcardware
“Software that is free, but hopes for a postcard.” We love receiving postcards from around the world showing where Stacks is being used! We showcase them on our website too.
Our address: Stacks.js, 12665 Village Ln #2306, Playa Vista, CA 90094, United States 🌎
Credits
We would like to extend our thanks to the following sponsors for funding Stacks development. If you are interested in becoming a sponsor, please reach out to us.
License
The MIT License (MIT). Please see LICENSE for more information.
Made with 💙