Skip to content

Preparing Releases

The prepare step is where changesets become a release. Cursus reads all pending changeset files, determines the next version for each package, and updates everything in one operation.

Terminal window
cursus prepare

Or for specific packages only:

Terminal window
cursus prepare -p my-package -p my-other-package
  1. Aggregate changesets — all changeset files in .cursus/ are read and grouped by package
  2. Determine versions — for each package, the highest change type (major > minor > patch) determines the version bump
  3. Propagate dependencies — packages that depend on a bumped package will also be bumped (see configuration)
  4. Update version filesCargo.toml, package.json, lock files, and any workspace references are updated
  5. Generate changelogsCHANGELOG.md entries are created from changeset descriptions
  6. Clean up — consumed changeset files are deleted
  7. Git operations — depending on your git strategy, changes are committed and optionally pushed or placed on a release branch

For monorepos where packages should share a version number, configure linked versions. When any package in a linked group is bumped, all packages in the group receive the same version.

When a package is bumped, its dependents may need a bump too. The dependency_bump setting controls this behaviour:

ValueBehaviour
auto (default)Propagates major upstream bumps as major; all others as patch
patch / minor / majorAlways bump dependents by this fixed level
matchBump dependents by the same level as the dependency

The [git] configuration controls how prepare interacts with Git:

  • push (default) — commits and pushes directly to the current branch
  • branch — creates a release branch (e.g., cursus-release/my-package) with a pull request if GitHub integration is enabled

Preview what prepare would do without making any changes:

Terminal window
cursus prepare --dry-run