主题
Git Commit Lint
1. 校验 commit 信息
1.1. 安装依赖
bash
npm i -D @commitlint/cli @commitlint/config-conventional husky详细说明
@commitlint/cli:提供命令行工具来校验 commit message@commitlint/config-conventional:提供常用的 commit message 规范(Angular 风格)husky:用 Git 钩子在 git commit 时触发 commitlint
1.2. package.json 中增加 husky 安装脚本
json
{
"scripts": {
"prepare": "husky install"
}
}1.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:页脚前必须有空行。
1.4. Husky 钩子配置
提示
钩子需要 chmod +x 赋予可执行权限。
1.4.1. 创建 commit-msg 钩子
bash
npx --no-install commitlint --edit "$1"提示
commit-msg 用于验证提交信息本身(比如是否符合 Conventional Commits、长度、内容),也能阻止不合规的提交。
提示
pre-commit 用于在提交前检查或修改工作区/暂存区的代码(如格式化、lint、单元测试、lint-staged),可以在提交之前阻止提交。
1.4.2. 创建 pre-commit 钩子
bash
# 例如:
pnpm lint && pnpm format
# 建议不要在 pre-commit 钩子中执行 全量命令,会导致提交缓慢,可配合 lint-staged 只针对暂存文件执行命令。2. lint-staged
2.1. 安装依赖
bash
npm i -D lint-staged提示
lint-staged 是一个工具,可以在 git 暂存文件上运行 linters(如 Prettier、ESLint),确保提交的代码符合规范。
2.2. 配置 package.json
在 package.json 中添加:
json
{
// ...
"lint-staged": {
"src/**/*.{js,ts,jsx,tsx,vue,json}": [
"pnpm lint",
"pnpm format"
],
"src/**/*.{css,scss,less}": [
"pnpm lint",
"pnpm format"
]
},
}2.3. Husky 钩子配置
bash
npx --no-install lint-staged