Skip to content

FAQ ​

General ​

Do I need a config file? ​

No. bonvoy works with zero configuration for standard npm + GitHub projects.

Does bonvoy work with single packages? ​

Yes. If there's no workspaces field in your package.json, bonvoy treats it as a single package.

Does bonvoy work with pnpm/yarn workspaces? ​

Currently bonvoy supports npm workspaces. pnpm and yarn workspace support is planned.

What Node.js version is required? ​

Node.js >= 20.5.

Versioning ​

How does bonvoy decide the version bump? ​

By default, it parses conventional commit messages:

  • feat: → minor
  • fix: / perf: → patch
  • feat!: or BREAKING CHANGE: → major
  • Everything else → no bump

Can I force a specific version? ​

Yes:

bash
bonvoy shipit 2.0.0    # exact version
bonvoy shipit major     # force major bump
bonvoy shipit minor     # force minor bump

How are commits assigned to packages in a monorepo? ​

By the files they modified. If a commit changes packages/core/src/index.ts, it's assigned to the core package. A commit can be assigned to multiple packages.

What if there are no changes? ​

bonvoy exits cleanly with "No changes detected — nothing to release".

Git ​

Does bonvoy push to the remote? ​

Yes, by default. Disable with:

javascript
export default { git: { push: false } };

What tags does bonvoy create? ​

One per released package: @scope/core@1.2.0. Customize with tagFormat.

Does bonvoy need the full git history? ​

Yes. In CI, use fetch-depth: 0 with actions/checkout.

npm ​

Does bonvoy need an NPM_TOKEN? ​

Not if you use OIDC provenance in GitHub Actions (default). The token is provided automatically.

For other CI systems or manual releases, set NODE_AUTH_TOKEN.

Are private packages published? ​

No. Packages with "private": true are automatically skipped.

What happens if a version already exists on npm? ​

By default (skipExisting: true), it's skipped. No error.

Troubleshooting ​

"No changes detected" but I have commits ​

Make sure your commits use conventional format (feat:, fix:, etc.). Commits like chore: or docs: don't trigger releases by default.

Tags already exist ​

bonvoy validates that tags don't exist before releasing. If a tag exists from a previous partial release, delete it:

bash
git tag -d @scope/core@1.2.0
git push origin :refs/tags/@scope/core@1.2.0

Release failed halfway ​

Check .bonvoy/release-log.json for what was completed. It logs which packages were published and which tags were created, so you can manually clean up if needed.

Released under the MIT License.