module.exports = {
extends: ["@commitlint/config-conventional"],
rules: {
"subject-max-length": [2, "always", 72],
"type-enum": [
2,
"always",
[
"init",
"build",
"ci",
"chore",
"docs",
"feat",
"fix",
"perf",
"refactor",
"revert",
"style",
"test",
],
],
"scope-enum": [
2,
"always",
[
"init",
"parser",
"scanner",
"emitter",
"composer",
"constructor",
"lib",
"cli",
"docs",
"tests",
"benches",
"examples",
"ci",
"deps",
"release",
],
],
"scope-empty": [0],
"subject-case": [0],
"body-leading-blank": [1, "always"],
"body-max-line-length": [2, "always", 100],
"footer-leading-blank": [1, "always"],
"footer-max-line-length": [2, "always", 100],
"header-max-length": [2, "always", 100],
"header-min-length": [2, "always", 10],
},
parserPreset: {
parserOpts: {
referencesIgnorePattern: /\[skip ci\]|\[ci skip\]|\+semver:/,
},
},
helpUrl:
"https://github.com/conventional-changelog/commitlint/#what-is-commitlint",
ignores: [
(message) => message.includes("WIP"),
(message) => message.startsWith("Merge "),
(message) => message.startsWith("Revert "),
(message) => /^chore\(release\): \d+\.\d+\.\d+/.test(message),
(message) =>
message.includes("[skip ci]") &&
message.includes("[ci skip]") &&
message.startsWith("chore:"),
(message) => /^init: [Ii]nitial [Cc]ommit/.test(message),
],
};