Skip to content

stacksjs/bumpx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Social Card of this repo

npm version GitHub Actions Commitizen friendly

bumpx

A fast, dependency-free version bumping tool similar to bumpp and version-bump-prompt, built for Bun.

Features

  • πŸš€ Zero dependencies - Built using only Node.js built-ins and Bun tooling
  • πŸ“¦ Semver compliant - Supports all semantic versioning release types
  • πŸ”„ Monorepo support - Recursive bumping with --recursive flag
  • 🎯 Git integration - Automatic commit, tag, and push
  • ⚑ 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

Installation

# Install globally
bun install -g @stacksjs/bumpx

# Or use with bunx
bunx @stacksjs/bumpx patch

Usage

Basic Usage

# Bump patch version (1.0.0 β†’ 1.0.1)
bumpx patch

# Bump minor version (1.0.0 β†’ 1.1.0)
bumpx minor

# Bump major version (1.0.0 β†’ 2.0.0)
bumpx major

# Bump to specific version
bumpx 1.2.3

# Interactive version selection
bumpx prompt

Prerelease Versions

# Bump to prerelease
bumpx prepatch --preid beta  # 1.0.0 β†’ 1.0.1-beta.0
bumpx preminor --preid alpha # 1.0.0 β†’ 1.1.0-alpha.0
bumpx premajor --preid rc    # 1.0.0 β†’ 2.0.0-rc.0

# Increment prerelease
bumpx prerelease  # 1.0.1-beta.0 β†’ 1.0.1-beta.1

Git Integration

# Disable git operations
bumpx patch --no-commit --no-tag --no-push

# Custom commit message
bumpx patch --commit "chore: release v{version}"

# Custom tag name
bumpx patch --tag "v{version}"

# Sign commits and tags
bumpx patch --sign

# Skip git hooks
bumpx patch --no-verify

Monorepo Support

# Bump all package.json files recursively
bumpx patch --recursive

# Bump specific files
bumpx patch package.json packages/*/package.json

Advanced Options

# Execute custom commands
bumpx patch --execute "bun run build" --execute "bun test"

# Install dependencies after bump
bumpx patch --install

# Skip confirmation prompts
bumpx patch --yes

# CI mode (non-interactive, quiet)
bumpx patch --ci

# Print recent commits
bumpx patch --print-commits

# Skip git status check
bumpx patch --no-git-check

CI/CD Integration

bumpx is designed to work seamlessly in CI/CD environments:

Quick CI Usage

# CI mode - automatically non-interactive
bumpx patch --ci

# Or with explicit flags
bumpx patch --yes --quiet

# Auto-detect CI environment
export CI=true
bumpx patch  # Automatically enables CI mode

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 CI.md.

Configuration

Create a bumpx.config.ts file in your project root:

import { defineConfig } from '@stacksjs/bumpx'

export default defineConfig({
  // Git options
  commit: true,
  tag: true,
  push: true,
  sign: false,

  // Execution options
  install: false,
  execute: ['bun run build', 'bun run test'],

  // UI options
  confirm: true,
  quiet: false,

  // Advanced options
  recursive: false,
  printCommits: true
})

You can also use JSON configuration in package.json:

{
  "bumpx": {
    "commit": true,
    "tag": true,
    "push": true,
    "execute": ["bun run build"]
  }
}

CLI Options

Option Alias Description Default
--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 false
--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.

Community

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

Sponsors

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 πŸ’™

About

Bump your package.json versions & dependencies automatically.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published