Shareable configuration for Semantic Release with Conventional Commits https://www.conventionalcommits.org/
npm install semantic-release-preconfigured-conventional-commits
This is a ready-to-use, pre-defined configuration for semantic-release,
meant to support the use of conventional commits along with Whitesource Renovate.
#### MAJOR release
* Any commit type and scope terminating with ! causes a BREAKING CHANGE
#### MINOR release
Commit type chore with scope api-deps (Dependency updates*)
Commit type feat (Features*) with any scope
#### PATCH release
Commit type chore with scope core-deps (Dependency updates*)
Commit type fix (Bug Fixes*) with any scope
Commit type docs (Documentation*) with any scope
Commit type perf (Performance improvements*) with any scope
Commit type revert (Revert previous changes*) with any scope
#### No release
Commit type test (Tests*)
Commit type ci (Build and continuous integration*)
Commit type build (Build and continuous integration*)
Commit type chore with scope deps (Dependency updates*)
Commit type chore (General maintenance*) with scopes different than the ones mentioned above
Commit type style (Style improvements*) with any scope
Commit type refactor (Refactoring*) with any scope
To use this configuration, add to your package.json:
``json`
"devDependencies": {
"semantic-release-preconfigured-conventional-commits": "latest"
}
(actually, pick the latest stable version)
The configuration sets up and pre-applies semantic-release/commit-analyzer,semantic-release/release-notes-generator,semantic-release/changelog
and .
These are usually always present, but rarely enough.
Then, the recommended way to exploit this pre-configuration is through a release.config.js file in the project root;
the reason is that currently the semantic release extension mechanism does not merge the configurations
in-depth, thus, adding further plugins results in the configuration being ignored.
A minimal release.config.js for creating releases on GitHub, for instance, looks like:
`js
var config = require('semantic-release-preconfigured-conventional-commits');
config.plugins.push(
"@semantic-release/github",
"@semantic-release/git",
)
module.exports = config
`
It can be easily enriched to account for more elaborate workflows, as, for instance:
`js
var publishCmd =
IMAGE_NAME="danysk/docker-manjaro-texlive-ruby"
docker build -t "$IMAGE_NAME:\${nextRelease.version}"
docker push --all-tags "$IMAGE_NAME"``
var config = require('semantic-release-preconfigured-conventional-commits');
config.plugins.push(
[
"@semantic-release/exec",
{
"publishCmd": publishCmd,
}
],
"@semantic-release/github",
"@semantic-release/git",
)
module.exports = config
I gladly consider changes to the configuration.
In case you think something is missing or deserves to be changed,
open an issue.