Our plugin implementation is based off of eslint's plugin implementation;
Each plugin is an npm module with a name in the format of commitlint-plugin-<plugin-name>
, such as commitlint-plugin-jquery
. You can also use scoped packages in the format of @<scope>/commitlint-plugin-<plugin-name>
such as @jquery/commitlint-plugin-jquery
.
Plugins can expose additional rules for use in commitlint. To do so, the plugin must export a rules
object containing a key-value mapping of rule ID to rule. The rule ID does not have to follow any naming convention (so it can just be dollar-sign
, for instance).
module.exports = {
rules: {
"dollar-sign": function(parsed, when, value) {
// rule implementation ...
}
}
};
To use the rule in commitlint, you would use the unprefixed plugin name, followed by a slash, followed by the rule name. So if this plugin were named commitlint-plugin-myplugin
, then in your configuration you'd refer to the rule by the name myplugin/dollar-sign
. Example: "rules": {"myplugin/dollar-sign": 2}
.
To make clear that the plugin requires commitlint to work correctly you have to declare commitlint as a peerDependency
in your package.json
.
The plugin support was introduced in commitlint version 7.6.0
. Ensure the peerDependency
points to @commitlint 7.6.0
or later.
{
"peerDependencies": {
"@commitlint/lint": ">=7.6.0"
}
}
In order to make your plugin available to the community you have to publish it on npm.
Recommended keywords:
commitlint
commitlintplugin
Add these keywords into your package.json
file to make it easy for others to find.