Customised and relaxed @commitlint/config-conventional.
npm i -D @commitlint/cli @nrsk/config-conventional
Note: The following rules are considered problems and will yield a non-zero exit code when not met.
- condition:
type
is invalue
- rule:
always
- level:
error
- value:
[build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test]
echo "foo: some message" # fails
echo "fix: some message" # passes
- condition:
type
is in casevalue
- rule:
always
- level:
error
- value:
'lowerCase'
echo "FIX: some message" # fails
echo "fix: some message" # passes
- condition:
type
is empty - rule:
never
- level:
error
echo ": some message". # fails
echo "fix: some message" # passes
- condition:
scope
is in casevalue
- rule:
always
- level:
error
- value:
'lowerCase'
echo "fix(SCOPE): some message" # fails
echo "fix(scope): some message" # passes
- condition:
subject
is one of[sentence-case, start-case, pascal-case, upper-case]
- rule:
never
- level:
error
echo "fix(SCOPE): Some message" # fails
echo "fix(SCOPE): Some Message" # fails
echo "fix(SCOPE): SomeMessage" # fails
echo "fix(SCOPE): SOMEMESSAGE" # fails
echo "fix(scope): some message" # passes
echo "fix(scope): some Message" # passes
- condition:
subject
is empty - rule:
never
- level:
error
echo "fix:" # fails
echo "fix: some message" # passes
- condition:
subject
ends withvalue
- rule:
never
- level:
error
- value:
'.'
echo "fix: some message." # fails
echo "fix: some message" # passes
- condition:
header
hasvalue
or less characters - rule:
always
- level:
error
- value:
100
echo "fix: some message that is way too long..." # fails
echo "fix: some message" # passes
- condition:
footer
should have a leading blank line - rule:
always
- level:
warning
# fails
echo "fix: some message
BREAKING CHANGE: It will be significant"
# passes
echo "fix: some message
BREAKING CHANGE: It will be significant"
512
characters is actually way more than you would usually need, but in my case smaller value was breaking my semantic-release workflow, because release notes generated by semantic-release were way too long, so my workflow kept failing.
- condition: each line in
footer
hasvalue
or less characters - rule:
always
- level:
error
- value:
512
# fails
echo "fix: some message
BREAKING CHANGE: footer with multiple lines
has a message that is way too long and will break the line rule 'line-max-length' by several characters"
# passes
echo "fix: some message
BREAKING CHANGE: footer with multiple lines
but still no line is too long"
- condition:
body
should have a leading blank line - rule:
always
- level:
warning
# warning
echo "fix: some message
body"
# passes
echo "fix: some message
body"
- condition:
body
each line hasvalue
or less characters - rule:
always
- level:
error
- value:
512
# fails
echo "fix: some message
body with multiple lines
has a message that is way too long and will break the line rule 'line-max-length' by several characters"
# passes
echo "fix: some message
body with multiple lines
but still no line is too long"
Unlicense. Do whatever you want!