Skip to content

Introduction

semrel automates your release pipeline by reading Conventional Commits, calculating the correct next SemVer version, generating a changelog, and running configurable release plugins — with zero runtime dependencies.

Manual versioning is error-prone and slow. semrel removes the guesswork:

  • A feat: commit bumps the minor version.
  • A fix: commit bumps the patch version.
  • A commit with BREAKING CHANGE: in the footer bumps the major version.
  • Everything is reproducible and auditable through your git history.

Automated Versioning

Analyses Conventional Commits since the last tag and determines the correct SemVer bump automatically.

Plugin System

Every step of the release pipeline can be handled by a standalone plugin executable discovered and run by semrel.

Monorepo Support

Version multiple independent modules inside one repository, each with its own tag history.

Language Agnostic

Plugins are plain executables, so they can be written in any language and integrated through environment variables and normal process execution.

Each stage can be handled by a separate plugin executable. Install official plugins with commands such as semrel plugin install github, then configure them in .semrel.yaml.

semrelsemantic-releasegoreleaserrelease-pleaserelease-itchangesets
RuntimeNone (static binary)Node.js + npmNone (static binary)Node.js + npmNode.js + npmNode.js + npm
Semantic versioning from commits❌ (tag-based)❌ (manual)
Scope-based bump rules
Air-gap / offline CI✅ Native
Supply-chain securityCosign + SBOM + SLSACosign
Plugin languageAny binaryJavaScriptGo (built-in)HardcodedJavaScriptJavaScript
Monorepo✅ Free✅ Free✅ Free (OSS)

Full comparison: semrel vs semantic-release vs goreleaser vs release-please vs release-it vs changesets