git hooks是什么?
git hooks顾名思义就是git的一些钩子函数,也就是在用git进行一些操作的时候触发的函数。比如:git commit、git push等等
为什么要使用git hooks?
我们可以考虑这么一个场景:
在我们的开发团队中,我们想一统我们git commit的信息格式,那么我们就可以使用 pre-commit这个钩子函数进行提交验证。
如何使用git hooks
1.安装依赖
npm install --save-dev husky lint-staged @commitlint/cli @commitlint/config-angular
2.在npm package.json中加入配置
{
// husky继承了Git下所有的钩子,在触发钩子的时候,husky可以阻止不合法的commit,push等等
// 注意使用husky之前,必须先将代码放到git仓库中,否则本地没有.git文件,就没有地方去继承钩子了
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
// lint-staged 只检测本次改动的文件
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.js": "eslint --max-warnings=0"
},
"commitlint": {
"extends": [
"@commitlint/config-angular"
]
}
}
3.git提交的一些规范
- feat: 新功能(feature)
- fix: 修补bug
- docs: 文档(documentation)
- style: 格式(不影响代码运行的变动)
- refactor: 重构(即不是新增功能,也不是修改bug的代码变动)
- chore: 构建过程或辅助工具的变动
- revert: 撤销,版本回退
- perf: 性能优化
- test:测试
- improvement: 改进
- build: 打包
- ci: 持续集成
备注
以上配置我们走的只是本地的git hooks,熟悉git的同学知道,我们使用 --no-verify(简写为 -n)参数即可跳过本地检查,那么如何避免这种情况呢?
git hooks也提供了服务端的钩子,具体配置这里我们就不在赘述了。