GitHooks如何构建代码检查的工作流
GitHooks在构建项目工作流时非常有用,也非常灵活。这里呢,我想分享一下GitHooks在代码规范检查工作流中应用。在团队协作开发时,代码规范化非常重要,我希望在工作流中,能在代码提交前自动进行代码规范检查,只有代码规范检查通过,代码才能完成提交。
Git自带Hooks配置文件
Git工具自带有GitHooks工具,我们可以在项目中的.git/hooks
目录下找到配置文件,如下图
可以看到.sample
后缀的各种hooks样例,需要使用哪个hook,只需要去掉.sample
后缀,编辑对应的脚本文件就可。
如何更简单配置呢
Node环境
前端工作流配置中可以使用npm提供的husky包,只需简单配置就可以使用hooks。
安装husky,这里使用的是next版本,stable版本使用时,脚本未生效,原因暂不明。
1 | pip install husky@next --save-dev |
在package.json
文件中进行配置
1 | // package.json |
配置完成在每次执行 git commit
前,会先执行对应的脚本。这里只需要配置jslint相关命令,就可完成lint检测,如果不通过,会停止 git commit
操作。
这样我们前端的自动化工作流程就配置完毕了,很简单哦。
Python环境
Python环境中有相当多的和hooks相关的库文件,这里呢,我选择了pre-commit来配置Python环境中的自动化工作流。pre-commit配置起来也相当简单,它提供了一系列的hooks供我们使用,参看。
配置时,只需要指定你想要的hooks,pre-commit将会安装并执行相应的hooks在每次 git commit
之前。即使你没有安装node环境,但是修改了js文件并执行js文件代码加测,pre-commit会自动下载并安装node环境来执行jslint检测,并且不需要拥有root权限。
安装pre-commit
1 | pip install pre-commit |
安装完成后,在项目中添加配置文件.pre-commit-comfig.yaml,添加如下内容
1 | - repo: git://github.com/pre-commit/mirrors-pylint |
这里我们配置了pylint工作流,在 git commit
命令执行前进行Python代码规范检查。
配置完成后,运行 pre-commit install
将会在git hooks中添加pre-commit,项目中的 .git/hooks 目录下会多一个pre-commit文件,这样我们的配置就完成了。