Husky 是一个用于管理 Git 钩子(Git Hooks) 的工具,能够帮助开发者在 Git 操作的特定阶段(如提交代码、推送代码前)自动触发自定义脚本,常用于代码规范检查(如 ESLint)、测试运行、提交信息格式化等场景,确保团队代码质量的一致性。
Husky 的核心作用
- 自动化流程:在
git commit、git push等操作前/后自动执行命令(如代码检查、测试)。 - 拦截违规操作:若脚本执行失败(如测试不通过、代码格式错误),则阻止 Git 操作。
- 团队协作:通过 Git 钩子统一开发规范,减少人工检查成本。
1.使用yarn下载husky相关依赖
husky:用于管理 Git Hook。commit - lint:用于校验提交信息。@commit - lint/config - conventional:提供了基于 Conventional Commits 规范的配置,我们可以基于此并结合你的自定义规范进行调整。
yarn add -D @commitlint/cli @commitlint/config-conventional husky
2.初始化husky
启用git钩子功能
yarn husky install
(可选) 在package.json中添加prepare脚本,确保新克隆项目时会自动安装钩子
{
“scripts”:{
“prepare”:"husky install"
}
}
3.创建一个自定义的 commitlint 配置文件( commitlint.config.js ):
module.exports = {
rules: {
'type-enum': [2, 'always', [
'add', // 新增功能或文件
'update', // 更新功能
'fix', // 修复bug
'ui', // 更新UI
'style', // 样式修改
'init', // 初始化
'docs' // 文档修改
]],
'type-empty': [2, 'never'],
'subject-empty': [2, 'never'],
'type-case': [2, 'always', 'lower-case'],
'subject-case': [0]
}
};
4.添加Git钩子
4.1.创建钩子脚(提交完前执行lint检查) (会生成.husky/pre-commit文件 ,内容包含了npm run lint 命令) ***** 语法命令未生效
npx husky add .husky/pre-commit "npm run lint"
可以使用手动创建
.husky/pre-commit 文件中添加以下内容
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
yarn lint
4.2.1手动创建一个.husky 目录下的 commit-msg文件 (git提交commit信息语法格式是否满足检查)文件:
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npx --no -- commitlint --edit $1
4.2.2然后给这个文件添加执行权限
git update-index --chmod=+x .husky/commit-msg
常用钩子示例
| 钩子名称 | 触发时机 | 典型用途 |
|---|---|---|
| pre-commit | 提交代码前 | 运行 lint、测试、代码格式化 |
| commit-msg | 检查提交信息格式时 | 使用 commitlint 规范提交信息 |
| pre-push | 推送代码到远程仓库前 | 运行完整测试套件 |