react项目如何接入husky+lint-staged

959 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情

前言

上一篇文章我讲了react如何配置了eslint,让代码更符合规范,格式也更整齐。但是有时候忘了改就把没有改正的代码提交了,别人拉下来看到报错才知道。

那该怎么避免呢?好,这篇文章就来讲这个。

正文

要避免,就只能在代码提交的时候一定要进行校验,要校验通过才能提交。

我是通过 husky + lint-staged 这两个依赖包实现的。

husky

husky是生成git的的各个hook钩子的。生成的钩子会在执行git的各个操作的时候触发。

下面看看怎么配置。

选一种方式安装即可。我安装的是8.0.1版本

npm install husky -D

yarn add husky -D

pnpm add -D husky 

然后

// npm7及以上可以执行
npm set-script prepare "husky install"

// npm7以下可以执行
npx npe scripts.prepare "husky install"

这个命令会在package.jsonscripts字段里加一条 { "prepare": "husky install" }

或者你也可以手动添加

然后你执行这条命令npm run prepare

就会在当前目录下生成一个.husky目录。

然后继续执行下面命令,会生成一个hook钩子,叫pre-commit.

npx husky add .husky/pre-commit "yarn run lint"

注意:window下不要使用node-16版本来执行这个命令,会报错。

这个钩子是在代码commit的时候会执行,执行的是后面引号部分yarn run lint

然后你可以在lint执行你想要的操作。

lint-staged

有时候不想对所有文件执行eslint,只想对暂存的文件做操作,那么就可以用lint-staged这个依赖。

它是只对暂存区的git文件才会执行操作。其它区的不做处理。

安装,我装的是9.5.0版本

npm install lint-staged -D

yarn add lint-staged -D

pnpm add -D lint-staged 

我就在lint的命令执行lint-staged,然后在lint-staged字段根据对匹配的文件进行代码格式化和git add,重新把它添加到暂存区。

配置如下:

{
  "scripts": {
    "prepare": "husky install",
    "lint": "lint-staged"
  },
  "lint-staged": {
    "*.{js,jsx}": [
      "eslint --fix",
      "git add"
    ]
  }
}

配置好后故意打印一个不存在的变量试试

image.png

可以看到,生效了。你要fix后才能提交。