避免糟糕的 git commit之git hooks

最近项目在研究代码规范问题,想到了在commit前是否可以统一检查下,于是就打开了git hooks的大门。
首先安装2个包:husky和lint-staged(前提是eslint 已安装配置)。

  • husky:用于注册git hooks,安装完成后会在项目目录下看到所有的hooks。


    git hooks

    每个hook里面的内容是一样的,关键在于hookName的不同。

  • lint-staged:对暂存的git文件运行linters并且不要让进入代码库。
    ps:官网的介绍很有意思!可以愉快的码代码了,哈哈哈。


    lint-staged

安装完成后,在package.json里面增加如下配置:

pre-commit

这样每次commit前,都会执行一次对应的 hook 脚本lint-staged,来检查暂存区的src文件夹下的有改动的js和jsx文件,warning为0才可以commit。
warning为0

有warning时不能commit,lint会告诉你哪个文件哪一行有问题。
lint-staged可以配置eslint自动修复("eslint --fix"),但个人觉得还不是很安全,手动修复比较保险。
还可以配置代码格式化,当然,需要安装prettier,在lint-staged里新增一行配置就ok了,当然,格式化之后需要重新add。
prettier

上述配置执行的流程如下:
1 待提交的代码git add 添加到暂存区;
2 执行 git commit;
3 husky注册在git pre-commit的钩子函数被调用,执行lint-staged;
4 lint-staged 取得所有被提交的文件依次执行写好的任务(ESLint 和 Prettier);
5 如果有错误(没通过ESlint检查)则停止任务,同时打印错误信息,等待修复后重新进行add和commit;
6 成功commit,可push到远程。

你可能感兴趣的:(避免糟糕的 git commit之git hooks)