Git Hooks
在了解husky之前,我们需要先了解一下Git Hooks。Git Hooks是git提供的一些回调函数,在对应的git阶段,执行配置的脚本。
《progit-Git钩子》
工作流钩子主要为以下4个,执行顺序pre-commit > prepare-commit-msg > commit-msg > post-commit
:
ps:其中
pre-commit prepare-commit-msg
是在提交信息填写之前触发,而post-commit
是提交之后触发,所以对commit日志校验是通过commit-msg
实现。commit-msg
脚本如果以非0值退出,Git将放弃提交。
husky的原理是在.git/hooks/
目录下各个钩子文件中添加以下脚本,并读取package.json中的配置,放在对应的钩子中执行:
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');
}
网友评论