commitlint:commitlint checks if your commit messages meet the conventional commit format.(commitlint检查提交消息是否符合常规提交格式)
场景
团队协作多人开发,规范git commit -m"..."
的提交信息。
使用
【第一步】安装commitlint
$ npm install --save-dev @commitlint/config-conventional @commitlint/cli
【第二步】根目录添加commitlint配置文件commitlint.config.js
module.exports = {
extends: [
"@commitlint/config-conventional"
]
}
【第三步】安装husky
# 能够在项目中方便添加 git hooks(即git 钩子),拦截git commit进行校验
# Install Husky v6
npm install husky --save-dev
# or
yarn add husky --dev
# Activate hooks
npx husky install
# or
yarn husky install
【第四步】add hooks
执行以下3条命令,在根目录生成一个.husky文件夹,且文件夹下会自动生成一个commit-msg文件 文件中已经写有commitlint命令
echo '
#!/bin/sh
. "\$(dirname "\$0")/_/husky.sh"
npx --no -- commitlint --edit ${1}
' > .husky/commit-msg
chmod a+x .husky/commit-msg
【第五步】commitlint配置,自定义commit提交内容规则
@commitlint/config常规
git commit -m格式:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
格式分为header body footer三个部分
header
# type:提交类型(必选)
# optional scope:可选范围(改动了哪个模块,非必选)
# description:提交描述(必选)
body(非必选)
本次提交的详细描述,修改原因,修改内容
footer(非必选)
影响,兼容
常用commit类型
feat: 新功能
fix: 修复 Bug
docs: 文档修改
perf: 性能优化
revert: 版本回退
ci: CICD 集成相关
test: 添加测试代码
refactor: 代码重构
build: 影响项目构建或依赖修改
style: 不影响程序逻辑的代码修改
chore: 不属于以上类型的其他类型(日常事务)
// commitlint.config.js
module.exports = {
extends: [
"@commitlint/config-conventional"
],
// 这里定义的任何规则都将覆盖@commitlint/config常规中的规则
"rules": {
"type-enum": [2, 'always', [
'feat', 'fix', 'docs', 'perf', 'revert', 'ci', 'test', 'refactor','build','style','chore'
]],
}
}
测试
$ git add .
$git commit -m"commitlint配置修改"
提交的commitlint不规范,git会报错,提交不成功
重新提交
$git commit -m"fix:commitlint配置修改"