最近项目在研究代码规范问题,想到了在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里面增加如下配置:
这样每次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到远程。
网友评论