Skip to content

A library of helper functions to do SemVer2 compliant releases from Conventional Commits in monorepos

License

Notifications You must be signed in to change notification settings

coveo/semantic-monorepo-tools

Repository files navigation

semantic-monorepo-tools

A library of helper functions to do SemVer2 compliant releases from Conventional Commits in monorepos.

Install

npm install @coveo/semantic-monorepo-tools

Why?

Before, one would use lerna version to make semantic releases in a monorepo, but lerna is dead.

The most predominant tools in the field, standard-version and semantic-release do not offer the level of flexibility that lerna did offer (e.g. it's hard to do semantic releases when packages do not share the same version and Changelog generation are sometimes tangled).

Because there are so many ways to do semantic releases in a monorepo, and that an opinionated way could result in releases that make less sense for the user of the published packages, semantic-monorepo-tools took the approach to leave the implementation process in the hand of the user, and instead focus on providing functions to 'get what you need' and 'do what you need to do' directly with JavaScript.

What?

semantic-monorepo-tools aims to take the functions of a single-package release flow such as standard-version and make them available as standalone building blocks. The goal is to make abstractions of the inner working of the tools (e.g. git, npm) behind simple pure (ish) functions.

Examples

semantic-monorepo-tools use itself for its release process, you can see the 'meat of it' here. It is also used for the release processes of several monorepos at Coveo, you can find implementations examples on some of our repository: