学不动系列-git-hooks和husky+lintstage

本文介绍了如何使用git-hooks和husky工具在每次代码提交前自动执行ESLint检查,包括手动配置git-hooks,使用mygithooks管理统一配置,以及集成husky进行自动化。
摘要由CSDN通过智能技术生成

代码提交检查

以上我们在Vscode里配置了Eslint和Prettier来检查和规范我们的代码,但这个只是针对编辑器里的错误提示,有的人可能没装这两个插件,有的人可能看到提示视而不见,所以我们需要在代码提交的时候对代码进行检查,来保证所有人提交的代码格式都是符合要求的。

git-hooks

为了保证提交的代码符合规范,可以在上传代码时进行校验。常用husky来协助进行代码提交时的eslint校验。husky是基于git-hooks来实现,在使用husky之前,我们先来研究一下git-hooks。

构建git-hooks测试项目

需要使用git-hooks就需要git环境
新建文件夹02-githook,该项目使用eslint来做代码检查,项目构建参考eslint的测试项目,如下图所示:

npm init -y
npx eslint --init
npx eslint ./src

在这里插入图片描述
测试项目构建完毕。

测试git-hooks

配置git环境

回到根目录下,输入

git init

在根目录新建文件.gitignore

# Dependency directories
node_modules/

# Logs
logs
.pnpm-debug.log*
# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

我们可以看到存在一个.git名称的文件夹,事实上,在我们项目中根目录下运行git命令时,git会根据它来工作,接下来我们进入到这个.git文件夹中
在这里插入图片描述
可以看到存在一个hooks文件夹,该文件夹提供过了git命令相关的钩子,也可以直接在vscode中查看,可能有些人的vscode中看不到.git文件夹,只需要在settings.json中配置一下即可

{
 "files.exclude":{
        "**/.git": false
    }
}

在这里插入图片描述
可以看到hooks文件夹中有很多xxxx.sample的文件,这些文件都是git的hooks,不同的名称有不同的作用如pre-commit.sample就是提交代码到git前触发,这些命令只要我们配置好就会帮助我们去执行。

模拟需求,在提交代码之前进行eslint检查

比如现在我们的需求是每次提交git代码之前检查一下代码是否有问题,运行eslint命令npx eslint .src/来检查代码,应该如何使用githooks?

使用githooks

  1. 重新创建一个文件,文件名为pre-commit去掉sample,其他的hooks也是如此的做法,pre-commit的内容如下:
#!/bin/sh
echo pre-commit

控制台输出文字 test pre-commit,代表成功的使用githooks,
2. 这里的echo test pre-commit脚本如果修改成eslint检测脚本不就可以完成需求了吗?例如修改成

#!/bin/sh
echo pre-commit && npx eslint ./src

在这里插入图片描述
修改app.js文件,输入命令

git add .

在这里插入图片描述
commit 成功后出现
在这里插入图片描述

这里又会出现一个问题,每个人开发的githooks配置都不同,没有办法做到每个人都统一,我们就需要将这个配置放在根目录下面,可以通过git同步这一部分的配置,达到同一个项目在提交代码前做代码检测,具体步骤如下:

  • 在根目录下新建文件夹.mygithooks
  • 将pre-commit放置到该文件夹下面,pre-commit的内容如下:
#!/bin/sh
echo .mygithooks pre-commit && npx eslint ./src
  • 配置git的core.hooksPath,指令如下:git config core.hooksPath .mygithooks,可以指令正常成功可以看到git的目录下config配置中hooksPath .mygithooks
    在这里插入图片描述

  • 再次提交代码,测试是否生效
    在这里插入图片描述

husky

现在所有这些操作都是通过手工去完成的,有没有现成的工具自动化完成这些,有就是husky。husky是基于git-hooks来实现。

新建git分支用于测试husky

在这里插入图片描述
该分支在初始化基础上增加了settings.json文件用于开启eslint插件,并且需要将之前的配置hooksPath = .mygithooks注释
在这里插入图片描述

husky如何使用

通过npmjs网站查询husky,如下图所示
在这里插入图片描述
打开官网
在这里插入图片描述

安装husky

pnpm add --save-dev husky

初始化husky

pnpm exec husky init

该命令会在根目录下生成文件夹.husky ,并生成文件pre-commit
在这里插入图片描述

git代码提交测试husky是否生效

git commit -m "Keep calm and commit"
# test script will run every time you commit

如下图所示,测试成功
在这里插入图片描述

结合eslint测试

.husky文件夹中文件pre-commit文件新增语句npx eslint ./src
在这里插入图片描述

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Spider Cat 蜘蛛猫

你的鼓励将会是我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值