Skip to content

CLI Reference

bonvoy shipit

Release all changed packages.

bash
bonvoy shipit [bump] [options]

Arguments

ArgumentDescription
bumpOptional. Force a version bump: patch, minor, major, prerelease, or an exact version like 2.0.0

Options

OptionDescription
--dry-runPreview changes without executing anything
--jsonOutput results as JSON (for CI pipelines)
--package <name>Only release specific package(s). Repeatable
--preid <id>Prerelease identifier: alpha, beta, rc, etc. Default: next
--forceIgnore stale release log and proceed (see Rollback)

Examples

bash
# Automatic bump from conventional commits
bonvoy shipit

# Preview what would happen
bonvoy shipit --dry-run

# Force bumps
bonvoy shipit patch
bonvoy shipit minor
bonvoy shipit major
bonvoy shipit 2.0.0

# Prereleases
bonvoy shipit prerelease --preid beta     # 1.0.0 → 1.0.1-beta.0
bonvoy shipit prerelease --preid beta     # 1.0.1-beta.0 → 1.0.1-beta.1
bonvoy shipit patch                       # 1.0.1-beta.1 → 1.0.1

# Release specific packages only
bonvoy shipit --package @scope/core
bonvoy shipit --package @scope/core --package @scope/utils

# JSON output for CI
bonvoy shipit --json

JSON Output

When using --json, the output looks like:

json
{
  "success": true,
  "dryRun": false,
  "released": [
    { "name": "@scope/core", "version": "1.2.0", "bump": "minor" },
    { "name": "@scope/utils", "version": "1.1.1", "bump": "patch" }
  ],
  "changelogs": {
    "@scope/core": "## 1.2.0\n\n### ✨ Features\n...",
    "@scope/utils": "## 1.1.1\n\n### 🐛 Bug Fixes\n..."
  }
}

Auto-Detection

shipit is context-aware:

  • On main with .bonvoy/release-pr.json: enters publish-only mode (the release PR was merged, so it only publishes and creates GitHub releases — no version bumps)
  • Otherwise: runs the full release lifecycle

bonvoy prepare

Create a release PR with version bumps and changelogs (PR-based workflow).

bash
bonvoy prepare [bump] [options]

Arguments

ArgumentDescription
bumpOptional. Force a version bump type or exact version

Options

OptionDescription
--dry-runPreview without creating the PR
--preid <id>Prerelease identifier

What It Does

  1. Analyzes commits since last release
  2. Calculates version bumps
  3. Creates a release branch (release/<timestamp>)
  4. Updates package.json versions
  5. Generates changelogs
  6. Commits and pushes the branch
  7. Creates a PR targeting the base branch
  8. Saves tracking info to .bonvoy/release-pr.json

After the PR is merged, running bonvoy shipit on the base branch will detect the tracking file and enter publish-only mode.

bonvoy status

Show pending changes since the last release.

bash
bonvoy status [options]

Options

OptionDescription
--allShow all packages with versions, not just changed ones

Examples

bash
# Show only packages with pending changes
bonvoy status

# Show all packages with their current versions
bonvoy status --all

Output

Without --all, only changed packages are shown:

📦 2 package(s) with pending changes:

  @scope/core: 1.0.0 → 1.1.0 (minor, 3 commits)
  @scope/utils: 0.5.0 → 0.5.1 (patch, 1 commit)

📝 4 commit(s) since last release
📊 5 total package(s) in workspace

With --all, all packages are listed:

📊 5 package(s) in workspace:

  @scope/core: 1.0.0 → 1.1.0 (minor)
  @scope/utils: 0.5.0 → 0.5.1 (patch)
  @scope/cli: 0.3.0
  @scope/config: 0.2.0
  @scope/types: 0.1.0

📝 4 commit(s) since last release

bonvoy changelog

Preview the changelog that would be generated.

bash
bonvoy changelog

Shows the changelog content without making any changes.

bonvoy rollback

Roll back the last release using the action log.

bash
bonvoy rollback [options]

Options

OptionDescription
--dry-runPreview what would be rolled back without executing
--forceSkip stale release log check

Examples

bash
# Roll back the last release
bonvoy rollback

# Preview rollback actions
bonvoy rollback --dry-run

See the Rollback Guide for details on how rollback works.

Released under the MIT License.