Skip to content

Commit

Permalink
doc: update readme (#6)
Browse files Browse the repository at this point in the history
* Update README.md

* Update README.md

* prettier
  • Loading branch information
louis-bompart authored Mar 30, 2022
1 parent 4aa543b commit 5e23c5e
Showing 1 changed file with 26 additions and 1 deletion.
27 changes: 26 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,28 @@
# semantic-monorepo-tools

Tooling for Mono-repo using semantic releases
A library of helper functions to do [SemVer2](https://semver.org/) compliant releases from [Conventional Commits](https://www.conventionalcommits.org/) 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](https://github.com/lerna/lerna/issues/3062).

The most predominant tools in the field, [`standard-version`](https://github.com/conventional-changelog/standard-version) and [`semantic-release`](https://github.com/semantic-release/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](/scripts/release.mjs).
It is also used for the release processes of several monorepos at Coveo, you can find implementations examples on some of our repository:

- [`coveo/cli`](https://github.com/coveo/cli/blob/master/scripts/releaseV2)
- [`coveo/plasma`](https://github.com/coveo/plasma/blob/master/build/publishNewVersion.mjs)

0 comments on commit 5e23c5e

Please sign in to comment.