前端工程化工具系列(五)—— 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 的版本。

bash 复制代码
node -v

Node.js 推荐使用 v18.20.3+ 或者 v20.13.1+。

这里使用的包管理器是 PNPM,版本为 v9.1.4。

1 安装

在项目的根目录下打开命令行(Powser Shell、Zsh、Bash等),运行:

bash 复制代码
pnpm add -D husky lint-staged

2 配置

在命令行中执行:

bash 复制代码
pnpm exec husky init

NPM 则执行:

bash 复制代码
npx husky init

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

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

bash 复制代码
pnpm exec lint-staged

2.1 结合 ESLint 和 stylelint

在 package.json 中添加:

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

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

2.2 结合 commitlint

Linux/macOS 系统,可执行:

bash 复制代码
echo "pnpm dlx commitlint --edit $1" > .husky/commit-msg

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

bash 复制代码
pnpm dlx commitlint --edit $1

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

相关推荐
万少4 分钟前
万少的 Claude Code 入门教程
前端·人工智能·后端
এ慕ོ冬℘゜14 分钟前
JS 前端基础高频面试题
开发语言·前端·javascript
放下华子我只抽RuiKe516 分钟前
React 从入门到生产(八):测试与部署
前端·javascript·深度学习·react.js·前端框架·ecmascript·集成学习
蜡笔小电芯23 分钟前
【Electron】第2章—BrowserWindow 与 Electron 窗口机制
前端·javascript·electron
zhangxingchao27 分钟前
AI 大模型面试核心二:微调、RAG、MCP、Agent 与工程落地
前端·人工智能·后端
ZC跨境爬虫28 分钟前
跟着 MDN 学CSS day_15:(掌握CSS背景与边框的创造性用法)
前端·css·ui·html·tensorflow
zhangxingchao29 分钟前
AI 大模型面试核心三: RAG、Agent 到 Prompt Engineering 的工程化理解
前端·人工智能·后端
Hilaku31 分钟前
从 15MB 减到 800KB,一行 ffmpeg 解决3D 渲染卡顿问题
前端·javascript·程序员
彦为君32 分钟前
JavaSE-11-ByteBuffer(NIO核心组件)
java·开发语言·前端·数据库·后端·spring·nio
丁劲犇36 分钟前
使用TraeAI开发Web页面测试MSYS2 ucrt64 Qt MCP服务器
服务器·前端·c++·qt·mcp