前端工程化工具系列(五)—— Husky(v9.0.11)&lint-staged(v15.2.5):代码提交前的自动审查利器

Husky 允许开发者在Git钩子(hooks)上运行脚本,如 pre-commit、pre-push 等。 这样就可以在代码提交或推送时自动运行 ESLint、Prettier 等代码质量工具,来检查提交信息、代码并运行测试。
lint-staged 可以针对暂存的 git 文件进行分析,将它与 Husky 和 ESLint 等工具结合使用,可以提高linting效率

1. 环境要求

v9 以上的 husky,支持 Node.js v18+。
v15 以上的 lint-staged,支持 Node.js v18.12.0+。

在命令行中输入以下内容后回车,来查看当前系统中 Node.js 的版本。

node -v

Node.js 推荐使用 v18.20.3+ 或者 v20.13.1+。
这里使用的包管理器是 PNPM,版本为 v9.1.4。

1 安装

在项目的根目录下打开命令行工具,输入并回车:

pnpm add -D husky lint-staged

2 配置

在命令行工具中执行:

pnpm exec husky init

NPM 则执行:

npx husky init

以上命令会在项目的根目录下创建 .husky 文件夹,并在其中创建预提交脚本(pre-commit),同时更新 package.json 中的脚本。

打开 .husky/pre-commit 文件,删除其中的 “pnpm test” ,替换成:

pnpm exec lint-staged

2.1 结合 ESLint 和 stylelint

先要安装和配置 ESLint 以及 stylelint,具体操作请看该系列的《前端工程化工具系列(一)—— ESLint(v9.4.0):代码质量守护者 基础篇》和《前端工程化工具系列(三)—— Stylelint(v16.6.1):CSS/SCSS 代码质量工具》。
接下来要在项目根目录下的 package.json 中添加:

	"lint-staged": {
    "*.{js,vue,ts}": [
      "pnpm exec eslint --fix"
    ],
    "*.{css,scss}": [
      "pnpm exec stylelint --fix"
    ]
  }

这样在 git commit 的时候,会自动执行脚本,检查和修复提交文件中的错误。有些不能被自动修复的错误,需要手工修改后才可以提交。

2.2 结合 commitlint

先要安装和配置 commitlint,具体操作请看该系列的《前端工程化工具系列(四)—— Commitlint(v19.3.0):规范化 Git 提交
接下来要在命令行工具中执行:

echo "pnpm dlx commitlint --edit $1" > .husky/commit-msg

或在 .husky 目录下新建 commit-msg 文件,里边加入以下内容:

pnpm dlx commitlint --edit $1

这样在 git commit 的时候,会自动检查 commit message 中的格式,如果有错误,则不能提交。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-08 15:44:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-08 15:44:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-08 15:44:02       82 阅读
  4. Python语言-面向对象

    2024-06-08 15:44:02       91 阅读

热门阅读

  1. 【Rust】——【面向对象语言的特征】

    2024-06-08 15:44:02       32 阅读
  2. vscode找不到settings.json

    2024-06-08 15:44:02       27 阅读
  3. 【pnpm】安装依赖基础

    2024-06-08 15:44:02       32 阅读
  4. 求前缀表达式的值

    2024-06-08 15:44:02       28 阅读
  5. 深入理解 Vue 中的响应式系统

    2024-06-08 15:44:02       31 阅读
  6. Hudi Spark Sql Procedures 回滚 Hudi 表数据

    2024-06-08 15:44:02       32 阅读
  7. webrtc客户端测试和arm平台测试(待补充)

    2024-06-08 15:44:02       29 阅读
  8. 用r语言处理 Excel数据当中的缺失值方法

    2024-06-08 15:44:02       33 阅读
  9. 【Unity】资源管理与热更 YooAsset+HybridCLR

    2024-06-08 15:44:02       37 阅读
  10. 0101__linux libtool简单使用

    2024-06-08 15:44:02       32 阅读
  11. 05 Linux 内核启动流程

    2024-06-08 15:44:02       28 阅读
  12. 【GIC400】——中断使能

    2024-06-08 15:44:02       32 阅读