自定义 commitlint header 格式
Customise commitlint header format
我正在使用 Husky 来设置我的 git 挂钩,并且正在尝试更改为 Commitlint 所期望的 header 的默认格式:
type(scope?): subject
我特别想尝试这种格式:
:gitmoji:? [scope] subject
:gitmoji:
是 Gitmoji 的表情符号之一并且是可选的,范围内有方括号(不是可选的)而不是圆括号,并且没有 :
将类型+范围与主题分开。此外,我希望 scope
具有类似于 TCKT-666
的格式(例如引用 Jira 的票证),
现在,我一直在使用 commitlint.config.js
的 parserPreset
、parserOpts
、headerPattern
和 headerCorrespondence
属性尝试很多事情,但我遇到了几个问题:
headerPattern
正则表达式似乎完全被忽略了,我得到的所有错误都只来自我在 commitlint.config.js
中设置的规则 - 所以我无法为我的 [=15] 设置特定的格式=](尽管 commitlint-plugin-function-rules 可能会有所帮助)
- 我完全不知道如何在类型后删除
:
的需要,或者如何用范围内的方括号替换圆括号
这应该适用于 :gitmoji:? [scope] subject
module.exports = {
parserPreset: {
parserOpts: {
headerPattern: /^(?:(:\w+:)\s)?\[(\w+)\] (.+)/,
headerCorrespondence: ["type", "scope", "subject"],
},
},
plugins: [
{
rules: {
"header-match-team-pattern": (parsed) => {
const { type, scope, subject } = parsed;
if (type === null && scope === null && subject === null) {
return [
false,
"header must be in format ':gitmoji:? [scope] subject'",
];
}
return [true, ""];
},
"gitmoji-type-enum": (parsed, _when, expectedValue) => {
const { type } = parsed;
if (type && !expectedValue.includes(type)) {
return [
false,
`type must be one of ${expectedValue}
see https://gitmoji.dev`,
];
}
return [true, ""];
},
},
},
],
rules: {
// "type-empty": [2, "never"],
"header-match-team-pattern": [2, "always"],
"gitmoji-type-enum": [2, "always", [":bug:", ":sparkle:"]], // custom rule defined in plugins
// "subject-case": [2, "always", "sentence-case"],
},
};
看起来需要像 header-match-team-pattern
这样的自定义规则来确保 RegExp 匹配。
我正在使用 Husky 来设置我的 git 挂钩,并且正在尝试更改为 Commitlint 所期望的 header 的默认格式:
type(scope?): subject
我特别想尝试这种格式:
:gitmoji:? [scope] subject
:gitmoji:
是 Gitmoji 的表情符号之一并且是可选的,范围内有方括号(不是可选的)而不是圆括号,并且没有 :
将类型+范围与主题分开。此外,我希望 scope
具有类似于 TCKT-666
的格式(例如引用 Jira 的票证),
现在,我一直在使用 commitlint.config.js
的 parserPreset
、parserOpts
、headerPattern
和 headerCorrespondence
属性尝试很多事情,但我遇到了几个问题:
headerPattern
正则表达式似乎完全被忽略了,我得到的所有错误都只来自我在commitlint.config.js
中设置的规则 - 所以我无法为我的 [=15] 设置特定的格式=](尽管 commitlint-plugin-function-rules 可能会有所帮助)- 我完全不知道如何在类型后删除
:
的需要,或者如何用范围内的方括号替换圆括号
这应该适用于 :gitmoji:? [scope] subject
module.exports = {
parserPreset: {
parserOpts: {
headerPattern: /^(?:(:\w+:)\s)?\[(\w+)\] (.+)/,
headerCorrespondence: ["type", "scope", "subject"],
},
},
plugins: [
{
rules: {
"header-match-team-pattern": (parsed) => {
const { type, scope, subject } = parsed;
if (type === null && scope === null && subject === null) {
return [
false,
"header must be in format ':gitmoji:? [scope] subject'",
];
}
return [true, ""];
},
"gitmoji-type-enum": (parsed, _when, expectedValue) => {
const { type } = parsed;
if (type && !expectedValue.includes(type)) {
return [
false,
`type must be one of ${expectedValue}
see https://gitmoji.dev`,
];
}
return [true, ""];
},
},
},
],
rules: {
// "type-empty": [2, "never"],
"header-match-team-pattern": [2, "always"],
"gitmoji-type-enum": [2, "always", [":bug:", ":sparkle:"]], // custom rule defined in plugins
// "subject-case": [2, "always", "sentence-case"],
},
};
看起来需要像 header-match-team-pattern
这样的自定义规则来确保 RegExp 匹配。