Introduction
Limit scopes per type with regexp and plain text.
Installation
npm i commitlint-plugin-selective-scope --save-dev
Usage
- If a type does not appear in the rule, do not enforce scope
- If a type appears in the rule with an empty array, do not allow scope
- If a type appears in the rule with an non-empty array, only allow the values in the array for scope.
- If the array includes null, the scope is optional.
Example
module.exports = {
plugins: ['selective-scope'],
rules: {
'selective-scope': [
2,
'always',
{
feat: [/^frontend\/[^\/]+$/, 'backend'],
perf: [],
ci: [null, 'codebuild', 'jenkins']
}
]
}
}
In the above rules configuration,
- if the type is
feat
, the scope must be either match the regex /frontend\/[^\/]+/
or be backend
- if the type if
chore
, the scope is optional and can be anything - if the type is
perf
, a scope is not allowed - if the type is
ci
, the scope must be codebuild
or jenkins
if present, but is not required