This project is a TypeScript-enhanced version of the original semantic-release-monorepo. It leverages TypeScript for improved type safety and includes updates to dependencies, codebase simplification, and support for ECMAScript Modules (ESM).
Ensure both semantic-release
and semantic-release-monorepo
are accessible in each package of your monorepo.
Install the package as a development dependency using yarn:
yarn add --dev @rimac-technology/semantic-release-monorepo
or npm:
npm install --dev @rimac-technology/semantic-release-monorepo
It is designed to integrate seamlessly with your current semantic-release workflow. Simply replace instances where you call the semantic-release CLI command with semantic-release-monorepo. For example, in your package.json's release script:
{
"scripts": {
"release": "semantic-release-monorepo"
}
}
Or, when using it in the CLI:
semantic-release-monorepo --extends @semantic-release/gitlab-config --dry-run
ℹ️ As the allowUnknownFlags is enabled, all flags will be passed to
internal semantic-release
call as options
argument.
This library modifies the context
object passed to semantic-release
plugins in the following way to make them compatible with
a monorepo.
Step | Description |
---|---|
analyzeCommits |
Filters context.commits to only include the given monorepo package's commits. |
generateNotes |
|
To prevent version conflicts, git tags are created with a namespace that incorporates the name of the package, such as
my-package-name@1.0.1
. To change this default setting, specify a
tagFormat key in the .releaserc
.