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.