优化前端工作流:一、使用husky对commit日志校验

Git Hooks

在了解husky之前,我们需要先了解一下Git Hooks。Git Hooks是git提供的一些回调,在对应的git阶段,执行配置的脚本。


《progit-Git钩子》

工作流钩子主要为以下4个,执行顺序pre-commit > prepare-commit-msg > commit-msg > post-commit

《progit-提交工作流钩子》

ps:其中pre-commit prepare-commit-msg是在提交信息填写之前触发,而post-commit是提交之后触发,所以对commit日志校验是通过commit-msg实现。commit-msg脚本如果以非0值退出,Git将放弃提交。

husky的原理是在.git/hooks/目录下各个钩子文件中添加以下脚本,并读取package.json中的配置,放在对应的钩子中执行:

.git/hooks/commit-msg

husky校验commit日志方法

npm安装完husky后,我们通过在package.json中配置,使git在commit-msg钩子后执行bin/check-commit-msg.js

  "husky": {
    "hooks": {
      "commit-msg": "node bin/check-commit-msg.js",
    }
  }

bin/check-commit-msg.js内容如下,非0值退出,Git将放弃提交:

const fs = require('fs')
const path = require('path')
const cwd = process.cwd()
const message = fs.readFileSync(path.join(cwd, '.git/COMMIT_EDITMSG'), 'utf-8')

var regex = /自定义校验规则/;
if (!regex.test(message)) {
  process.exitCode = 1;
  console.error('\033[33m Your message is not formatted correctly! \033[0m');
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容