In systems with many dependencies, releasing new package versions can quickly become a nightmare. Semver is a specification outlining a method of encoding the nature of change between releases of a “public interface”, directly into the version string.
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards compatible manner, and
- PATCH version when you make backwards compatible bug fixes.
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
Following tools will help you automate releases, enforce Semantic Versioning specification, integrate with your continuous integration workflow, avoid potential errors associated with manual releases, etc.
- semantic-release - Automates the whole package release workflow including: determining the next version number, generating the release notes and publishing the package.
- shipit - An automation engine and a deployment tool, it provides a good alternative to Capistrano or other build tools, easy to deploy or to automate simple tasks on your remote servers.
- release-it - Use release-it for version management and publish to anywhere with its versatile configuration, a powerful plugin system, and use hooks to execute any command you need to test, build, and/or publish your project.
- standard-version - A utility for versioning using semver and CHANGELOG generation powered by Conventional Commits.
- publish-please - Versatile enough to be used only as a validation tool before publishing or as an all-in-one tool when you want to manually handle your releases.