用 Husky 搞定 Git 提交规范:从踩坑到真香的实战经验

132 阅读2分钟

基于 commit-msgpre-commit,怎么用它们让团队代码质量上个台阶?

先说说这俩是干嘛的

你是不是也遇到过这种情况:队友提交代码时写个"fix"就完事,回头想找某次变更时翻半天记录?或者代码风格乱七八糟,一会儿单引号一会儿双引号?

这时候 Husky 的钩子脚本就派上用场了,可以在你提交代码前帮你把好关。

commit-msg:

这个脚本藏在 .husky/commit-msg 里,它的主要工作就是检查你写的提交信息合不合规矩。比如我们项目用了 Conventional Commits 规范,要求提交信息长成这样:

feat: 添加用户登录组件
fix: 修复移动端菜单不显示问题

如果谁想偷懒写个"改了点东西",commit-msg 会直接把提交打回去,逼着你写规范的信息。

pre-commit:

另一个脚本 pre-commit ,它会在你提交前自动检查并修复代码问题。比如我项目里配了 ESLint 和 Prettier,每次提交时它会:

  1. 自动修复语法错误(比如少个分号、变量未定义)
  2. 统一代码格式(比如缩进、引号风格)
  3. 把修复后的代码自动暂存

以前提交代码前总要手动跑一遍 lint 和 format,现在全交给它!

其他的一些配置

最后分享几个实用配置技巧:

  1. 提交信息模板:可以在项目根目录建个 COMMIT_TEMPLATE 文件,规定提交信息格式
  2. 自动格式化:在 lint-staged 里配置需要检查的文件类型,比如 Vue/React 项目可以加上 .vue.jsx
  3. 跳过检查:偶尔需要紧急提交时,用 git commit --no-verify 可以临时绕过钩子(但别滥用哦)

写在最后

刚开始觉得这些钩子挺麻烦,又是配置又是调试的。但用顺手之后才发现,它们就像隐形的助手,默默帮我们维持代码质量。现在我们团队的提交记录整整齐齐,代码风格也统一了,Code Review 效率都高了不少~