Skip to content

semantic-release

Automatically works out the next version number, writes release notes, and publishes your package.

Stars
24.1k
Forks
1.8k
Licence
MIT
Language
JavaScript
Last update
6 days ago
Type
Dev tool

What it is

semantic-release is a tool that runs in a continuous integration (CI) environment after code is merged. It reads your commit messages to decide whether the next release is a fix, a feature, or a breaking change, then assigns a matching Semantic Versioning number, generates release notes and a changelog, and publishes the package. The goal is to remove manual version bumping and publishing from the release process.

  • Publish a new npm package version automatically whenever a fix or feature is merged to the main branch
  • Generate release notes and a changelog from commit messages
  • Publish pre-releases from a beta or next branch on a separate npm dist-tag
  • Create Git tags for each new release version

Great for

  • Maintainers of JavaScript packages who already use a CI service
  • Teams that want consistent Semantic Versioning without manual version edits
  • Projects that follow the Angular commit message convention or can adopt one
  • Maintainers who want pre-release or maintenance channels such as npm dist-tags

Not ideal for

  • Projects that do not use commit messages in a structured format, since version decisions depend on them
  • Teams that want to choose version numbers by hand for each release
  • Beginners with no CI setup, because the tool is meant to run inside CI after each build
Step-by-step guide: how to use semantic-releaseInstall, first run, examples, tips and FAQs

How to get it

  1. 1

    Install with a package manager

    You'll need: Node.js · npm · Git

    Clone the repository

    git clone https://github.com/semantic-release/semantic-release.git
  2. 2

    Run it

    • Set up a CI workflow that runs after your tests pass on a release branch
    • Write commit messages using a format such as Angular conventions
    • Run the semantic-release command in CI
    • Check the Git tag, release notes, and published package after the first run
  3. 3

    Get the most out of it

    • Use shareable configurations to reuse one setup across projects
    • Use distribution channels to publish pre-releases and maintenance releases
    • Use the preset or config options to change the commit message format
    • Enable npm provenance on GitHub Actions for signed supply-chain attestations
    • Add commitlint or commitizen to enforce valid commit messages

Downloads

Strengths

  • Version numbers follow the Semantic Versioning specification consistently
  • Release steps are automated, which reduces manual publishing errors
  • Plugin-based design supports different package managers and distribution channels

Trade-offs

  • Relies on a strict commit message convention, which contributors must learn and follow
  • Designed to run in CI on every release branch push, so setup requires CI knowledge
  • The README provided is truncated, so detailed configuration and requirements could not be fully verified here

How it compares

ProjectStarsTypeLevelUpdatedBest for
semantic-release (this)24.1kDev toolintermediate6 days agoMaintainers of JavaScript packages who already use a CI service
changesets12.6kDev toolintermediate4 days agoTeams maintaining a monorepo with several interdependent packages
goreleaser16.1kDev toolintermediate4 days agoGo developers who want to publish command-line tools or binaries for several operating systems
lerna36kDev toolintermediate5 days agoJavaScript or TypeScript teams maintaining several related npm packages in one repository
cz-cli17.5kDev toolbeginner1 months agoTeams that want every commit message to follow the same format
oh-my-claudecode40.5kDev toolintermediate4 days agoDevelopers already using Claude Code who want multi-agent workflows

Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.