Skip to content

git 提交前

  • husky
  • lint-staged

husky 是一个用于在 git 进程的不同阶段运行脚本的工具,例如 add、commit、push 等。我们希望能够设置某些条件,并且只有在我们的代码满足这些条件时才允许提交和推送之类的事情成功,假设这表明我们的项目质量是可以接受的。


lint-staged 提交前对代码进行 eslint 校验

husky 的使用

1. 安装

bash
npm i husky -D

2. 初始化

bash
npx husky init

init 命令简化了项目中的 husky 设置。根目录下会有 .husky 目录,它会在 .husky 中创建 pre-commit 脚本,并更新 package.json 中的 prepare 脚本。随后可根据你的工作流进行修改。

json
// package.json 自动新增脚本
"scripts": {
    "prepare": "husky",
}
bash
- .husky 目录文件:
  - _ # 包含git信息,如果项目没有绑定git仓库,在最后 commitlint 检查时不会进行校验
  - pre-commit

3. 在 pre-commit 中添加内容

pre-commit 文件:提交前执行

bash
# 该代码是下面 lint-staged 要使用的,执行 husky 会调用该代码,进行 eslint 检查
npx lint-staged
# pnpm
pnpm exec lint-staged

lint-staged 的使用

1. 安装

bash
npm i lint-staged -D

# 安装 eslint
npm i eslint -D

2. 配置

json
"scripts": {
    "prepare": "husky",
    "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"
}
"lint-staged": {
  // 命中的文件格式:提交时哪些文件需要做eslint格式校验
  "*.{js,ts,vue}": "npm run lint" // 执行的是上面scripts的lint命令
}