- 了解什么是git hooks
- 配置husky+lint-staged完成代码提交规范检查
当一个团队在维护同一个项目的过程中,一般我们都采用git来进行代码托管,便于多人协同工作。那么这样同样会出现在代码提交的时候,代码规范不一致的问题,所以我们需要控制在代码提交的时候,保证大家的代码规范都是统一的。 那么这节课,配合我们上节课学习的代码规范工具,通过husky的调用git hooks钩子来实现代码提交前的代码规范校验。
git hooks是一些自定义的脚本,用于控制git工作的流程。 默认我们初始化完成一个项目的时候, 会在.git目录下生成hooks的文件夹,里面默认会有一些demo,我们可以直接在这里写脚本,然后在提交代码的各个阶段执行我们的钩子,来实现我们想要的功能。 直接使用.git/hooks的缺陷是,默认情况下,在.git/hooks目录下的hooks钩子无法被提交,就不能将钩子共享到团队项目中。所以我们需要通过husky来实现,git钩子的调用。
husky可以将git内置的钩子暴露出来,那么我们就可以解决,在git hooks中导致的无法提交钩子的问题。
pnpm add husky -D
在package.json的scripts中配置如下:
{
"scripts":{
"prepare":"husky install"
}
}
配置完成后,我们pnpm i初始化一下我们的工程。 初始化完成后会自动生成一个.husky的目录,接下来我们来配置一下在提交信息之前先去检查我们的代码。如果检查通过允许提交,如果检查不通过,我们不允许提交代码。 通过如下命令:
pnpm exec husky add .husky/pre-commit "pnpm run lint"
我们配置一下lint的命令在项目中:
{
"scripts":{
"lint":"eslint --ext .ts,.tsx,.vue,.js,.jsx src"
}
}
测试一下,我们在项目中写一个debugger,来测试一些命令:
提示我们不能存在debugger
像一些警告我们想默认修复他,那么我们可以直接在命令的后面加一个--fix就可以自动修复一些警告例如:
这些警告我们可以让eslint帮助我们按照我们定义的规范自动修复。
我们每次没必要把所有的文件都检查一遍,我们只需要检查我们提交改动的代码即可,所以这种情况下我们需要配合lint-staged使用。他的作用相当于一个文件过滤器,每次提交时只检查本次提交的暂存区的文件,但是他不能校验我们的代码。所以我们可以配合着husky lint-staged和我们的eslint一起使用。 我们先安装一下lint-staged
pnpm add lint-staged -D
然后我们在package.json中配置如下:
{
"lint-staged":{
"*.{js,tsx,vue,ts,jsx}":"eslint --fix"
}
}
调整husky的执行命令:
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# pnpm run lint 改为
pnpm exec lint-staged