Commitlint git commit 格式校验工具。
npm install -g @commitlint/cli @commitlint/config-conventional
touch commitlint.config.js
// commitlint.config.js
module.exports = {
extends: ['@commitlint/config-conventional']
}
默认读取根目录下commitlint.config.js 配置文件
commitlint --config <file path>
{
extends: [
// 使用本地共享配置文件
'./commitlint.local.js',
// 使用第三方npm包
'@commitlint/config-conventional',
// 以 `<scope>/commitlint-config` 格式的第三方包, 提供简写模式
'@coolcompany',
// commitlint-config-*
'lerna',
]
}
{
parserPreset: 'conventional-changelog-atom',
}
{
formatter: '@commitlint/format',
}
{
'type-enum': [2, 'always', ['foo']]
}
{
ignores: [(commit) => commit === ''],
}
{
defaultIgnores: true
}
'https://github.com/conventional-changelog/commitlint/#what-is-commitlint',
{
prompt: {
messages: {},
questions: {
type: {
description: 'please input type:',
},
},
},
}
[规则名称]:[level, applicable, value]
规则可接收: 1. 规则数组 Array, 2. 返回规则数组的函数 () => arry , 3. Promise规则数组 Promise<array> ,作为值
{
"rules":{
"header-max-length": [0, "always", 72],
"header-max-length": () => [0, "always", 72],
"header-max-length": async () => [0, "always", 72],
}
}
规则插件为我们提供自定义规则校验个能力。
{
rules: {
// 添加规则
'header-size-10': [2, 'always']
}
plugins: [
// 定义插件
{
rules:{
// 定义规则
'header-size-10': ({header}) => {
const pass = header.length > 10
const message = `header 长度不能超过10个字符`
return [pass, message]
}
}
}
]
提示器类似 commitizen 提供commit 提示工具。
npm i -D @commitlint/cli @commitlint/config-conventional @commitlint/prompt-cli
// commitlint.config.js
module.exports = {extends: ['@commitlint/config-conventional']}
"scripts": {
"commit": "commit"
}
git add *
npm run commit
commitizen 作为 Prompt 的替代方案, 官方为他提供适配器 @commitlint/cz-commitlint
该适配器主要有两部分组成:
通过 commitlint.config.json 配置文件自定义类型提示
为命令配置中文提示
image.png
image.png