@nrsk/config-conventional

Customised and relaxed @commitlint/config-conventional.

Usage no npm install needed!

<script type="module">
  import nrskConfigConventional from 'https://cdn.skypack.dev/@nrsk/config-conventional';
</script>

README

@nrsk/config-conventional

Customised and relaxed @commitlint/config-conventional.

Getting started

npm i -D @commitlint/cli @nrsk/config-conventional

Rules

Note: The following rules are considered problems and will yield a non-zero exit code when not met.

type-enum

  • condition: type is in value
  • 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

type-case

  • condition: type is in case value
  • rule: always
  • level: error
  • value: 'lowerCase'
echo "FIX: some message"  # fails
echo "fix: some message"  # passes

type-empty

  • condition: type is empty
  • rule: never
  • level: error
echo ": some message".    # fails
echo "fix: some message"  # passes

scope-case

  • condition: scope is in case value
  • rule: always
  • level: error
  • value: 'lowerCase'
echo "fix(SCOPE): some message"  # fails
echo "fix(scope): some message"  # passes

subject-case

  • 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

subject-empty

  • condition: subject is empty
  • rule: never
  • level: error
echo "fix:"               # fails
echo "fix: some message"  # passes

subject-full-stop

  • condition: subject ends with value
  • rule: never
  • level: error
  • value: '.'
echo "fix: some message."  # fails
echo "fix: some message"   # passes

header-max-length

  • condition: header has value or less characters
  • rule: always
  • level: error
  • value: 100
echo "fix: some message that is way too long..."  # fails
echo "fix: some message"                          # passes

footer-leading-blank

  • 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"

footer-max-line-length

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 has value 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"

body-leading-blank

  • condition: body should have a leading blank line
  • rule: always
  • level: warning
# warning
echo "fix: some message
body"

# passes
echo "fix: some message

body"

body-max-line-length

  • condition: body each line has value 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"

License

Unlicense. Do whatever you want!