Git 钩子本身只存在 .git/hooks 目录里,而 .git 不进版本库,所以它天然无法在团队间共享。Husky 的作用就是把钩子配置写进 package.json,安装时自动把钩子脚本写到每个开发者的 .git 中,pre-commit、pre-push、commit-msg 都能统一管理。
husky v9 的用法极简:npx husky init 后,在 .husky/ 目录放对应名字的脚本文件即可。它最常见的搭档是 lint-staged 与 commitlint:前者只检查暂存区文件保证速度,后者校验提交信息格式。注意钩子失败就会中止提交,这才是它「拦住坏代码」的机制。升级或卸载时旧钩子残留在成员电脑里也很常见,重新执行一次 husky 安装命令或手动清理即可同步。
// package.json —— 安装 husky 并初始化 // npx husky init 会创建 .husky/ 并写入 prepare 脚本 { "scripts": { "prepare": "husky" // npm install 时自动装钩子 }, "devDependencies": { "husky": "^9.0.0", "lint-staged": "^15.0.0" } } // .husky/pre-commit —— 提交前只跑暂存区文件的检查 npx lint-staged // .husky/commit-msg —— 校验提交信息是否符合规范 echo "$(cat "$1")" | npx commitlint --config commitlint.config.js