nx release is a set of tools for managing the full release lifecycle of your libraries and applications: versioning, changelog generation, and publishing.
What makes up a release?
A release consists of three phases that can be run together or independently:1
Versioning
Determine the next version for each project and update any projects that depend on them. Versions follow semantic versioning (semver) by default.
2
Changelog generation
Derive a changelog from commit messages or version plan files and write it to
CHANGELOG.md.3
Publishing
Publish packages to a registry (e.g. npm, crates.io, a Docker registry).
Run the full release
The top-levelnx release command runs all three phases in order:
nx release without a specifier, Nx prompts you to choose a semver keyword (major, minor, patch) or enter a custom version.
Configure nx release
Configure Nx Release innx.json under the release key:
Configure versioning
conventionalCommits is enabled, Nx determines the version bump automatically based on commit message prefixes (feat:, fix:, chore:, etc.).
Configure changelog
Configure git operations
nx.json:
Release groups for independent versioning
Release groups let you version subsets of projects independently with different configuration:Publish options
Programmatic API
For complex or highly customized release workflows, use the programmatic API directly in a Node.js script:Version plans (file-based versioning)
Instead of deriving version bumps from commit messages, you can create explicit version plan files:nx release CLI reference
Full reference for all nx release subcommands and flags.
nx.json release configuration
Configure release groups, versioning strategy, and changelog in nx.json.
CI setup
Set up automated releases in GitHub Actions, GitLab, or other CI providers.
Extend Nx
Write custom generators and executors to customize your release workflow.
