husky 使用
安装依赖
pnpm add -D husky @commitlint/cli @commitlint/config-conventional
初始化husky
npx husky init
添加配置
同时它会自动往 package.json 添加,如果没有就主动添加:
{
"scripts": {
"prepare": "husky install"
}
}
创建 commit-msg 钩子
创建文件
.husky/commit-msg
输入内容
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
echo "🔍 正在校验提交信息格式..."
pnpm exec commitlint --edit "$1"
创建自定义 commitlint 配置文件
根目录下创建文件 commitlint.config.js ,此处部分是个人自定义,可以根据自己项目需求进行不同配置:
export default {
// 自定义规则
rules: {
// 只允许 feat 和 fix 两种类型
'type-enum': [2, 'always', ['feat', 'fix']],
// type 必填(冒号前不能空)
'type-empty': [2, 'never'],
// 提交描述 subject 必填(冒号后不能空)
'subject-empty': [2, 'never'],
// 禁止以句号结尾
'subject-full-stop': [2, 'never', '.'],
// type 必须小写
'type-case': [2, 'always', 'lower-case'],
},
// 自定义友好错误消息(增强提示)
parserPreset: {
parserOpts: {
headerPattern: /^(\w*)(?:((.*)))?: (.*)$/,
headerCorrespondence: ['type', 'scope', 'subject'],
},
},
// 自定义提示说明
prompt: {
messages: {
skip: ':skip',
max: '上限 %d 个字符',
min: '下限 %d 个字符',
emptyWarning: '描述不能为空!',
upperLimitWarning: '超出长度限制!',
lowerLimitWarning: '内容太短!',
},
},
};
可选增强(添加中文提示)
.husky/commit-msg 文件添加友好提示
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
echo "🔍 正在校验提交信息..."
pnpm exec commitlint --edit "$1"
# 如果上一步出错(退出码不为0),显示错误提示
if [ $? -ne 0 ]; then
echo "❌ 提交信息不符合规范!"
echo "✅ 正确格式示例:"
echo " feat: 新增登录功能"
echo " fix: 修复页面加载错误"
exit 1
fi
🧪 六、测试效果
git add .
git commit -m "feat: 新增登录功能"
git commit -m "随便"
注:
pre-commit 文件中如果是
npm test
但是还是会报错,需要在package.json 添加
"scripts": {
"test": "echo "no tests configured""
},