主题
Git Commit Lint
1. 安装依赖
bash
npm i -D @commitlint/cli @commitlint/config-conventional husky lint-staged详细说明
@commitlint/cli:用于检查提交信息格式@commitlint/config-conventional:默认配置husky:Git hooks 工具lint-staged:仅对暂存区文件进行 lint
2. 配置 package.json
在 package.json 中添加:
json
{
"type": "module",
"scripts": {
"prepare": "husky install"
},
"lint-staged": {
"src/**/*.{js,ts,jsx,tsx,vue}": [
"prettier --write"
],
"src/**/*.{css,less}": [
"prettier --write"
],
"src/**/*.{json,md}": [
"prettier --write"
]
},
}3. 创建 commitlint 配置文件
js
export default {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [
2,
'always',
['build', 'chore', 'ci', 'docs', 'feat', 'fix', 'perf', 'refactor', 'revert', 'style', 'test'],
],
'type-case': [2, 'always', 'lower-case'],
'type-empty': [2, 'never'],
'subject-empty': [2, 'never'],
'subject-full-stop': [2, 'never', '.'],
'header-max-length': [2, 'always', 100],
'body-leading-blank': [2, 'always'],
'footer-leading-blank': [2, 'always'],
},
}详细说明
type-enum:允许的提交类型。type-case:类型必须小写。type-empty:类型不能为空。subject-empty:主题不能为空。subject-full-stop:主题不能以句号结尾。header-max-length:提交头最大长度为 100 字符。body-leading-blank:正文前必须有空行。footer-leading-blank:页脚前必须有空行。
4. 初始化 Husky
提示
钩子需要 chomd +x 赋予可执行权限。
4.1. 创建 commit-msg 钩子
bash
npx --no-install commitlint --edit "$1"提示
commit-msg 用于验证提交信息本身(比如是否符合 Conventional Commits、长度、内容),也能阻止不合规的提交。
4.2. 创建 pre-commit 钩子
bash
npx --no-install lint-staged提示
pre-commit 用于在提交前检查或修改工作区/暂存区的代码(如格式化、lint、单元测试、lint-staged),可以在提交之前阻止提交。
