基于 commit-msg 和 pre-commit,怎么用它们让团队代码质量上个台阶?
先说说这俩是干嘛的
你是不是也遇到过这种情况:队友提交代码时写个"fix"就完事,回头想找某次变更时翻半天记录?或者代码风格乱七八糟,一会儿单引号一会儿双引号?
这时候 Husky 的钩子脚本就派上用场了,可以在你提交代码前帮你把好关。
commit-msg:
这个脚本藏在 .husky/commit-msg 里,它的主要工作就是检查你写的提交信息合不合规矩。比如我们项目用了 Conventional Commits 规范,要求提交信息长成这样:
feat: 添加用户登录组件
fix: 修复移动端菜单不显示问题
如果谁想偷懒写个"改了点东西",commit-msg 会直接把提交打回去,逼着你写规范的信息。
pre-commit:
另一个脚本 pre-commit ,它会在你提交前自动检查并修复代码问题。比如我项目里配了 ESLint 和 Prettier,每次提交时它会:
- 自动修复语法错误(比如少个分号、变量未定义)
- 统一代码格式(比如缩进、引号风格)
- 把修复后的代码自动暂存
以前提交代码前总要手动跑一遍 lint 和 format,现在全交给它!
其他的一些配置
最后分享几个实用配置技巧:
- 提交信息模板:可以在项目根目录建个
COMMIT_TEMPLATE文件,规定提交信息格式 - 自动格式化:在
lint-staged里配置需要检查的文件类型,比如 Vue/React 项目可以加上.vue或.jsx - 跳过检查:偶尔需要紧急提交时,用
git commit --no-verify可以临时绕过钩子(但别滥用哦)
写在最后
刚开始觉得这些钩子挺麻烦,又是配置又是调试的。但用顺手之后才发现,它们就像隐形的助手,默默帮我们维持代码质量。现在我们团队的提交记录整整齐齐,代码风格也统一了,Code Review 效率都高了不少~