Husky:自动检查代码,提升团队协作效率

Husky 是一个非常轻量且实用的工具,它帮助你在使用 Git 进行代码提交和推送时,自动运行一些自定义的脚本,比如代码格式化、代码检查和测试,保证代码质量,让团队协作更加规范和高效。


什么是 Husky 和 Git Hooks?

  • Git Hooks 是 Git 自带的功能,它允许你在 Git 的某些操作阶段(如提交代码前、推送代码前)自动执行脚本。
  • Husky 是一个工具,帮你更方便地管理和使用这些 Git Hooks。它会在你的项目里创建一个 .husky 文件夹,里面放置各种钩子脚本。这样,团队成员都能用相同的钩子配置,避免每个人手动设置不同的钩子,保证一致性。

Husky 的主要作用

  • 自动运行代码检查:比如在提交前自动运行 ESLint 检查代码风格,或者 Prettier 格式化代码。
  • 自动运行测试:提交或推送代码前自动跑单元测试,防止有错误代码进入仓库。
  • 规范提交信息:检查提交信息是否符合规范,方便后续自动生成变更日志。
  • 减少人为疏忽:自动执行这些任务,避免忘记执行检查导致的问题。
  • 支持多种 Git 钩子 :如 pre-commit(提交前)、pre-push(推送前)、commit-msg(提交信息校验)等。

如何快速开始使用 Husky?

1. 环境准备

  • 需要先安装好 Git(版本推荐 2.9 以上)。
  • 项目已经初始化 Git 仓库(执行 git init)。

2. 安装 Husky

推荐使用一条命令快速安装并初始化:

bash 复制代码
npx husky-init && npm install

这条命令会完成以下工作:

  • 安装 Husky 依赖。
  • 在项目根目录生成 .husky 文件夹。
  • package.json 中添加 "prepare": "husky install" 脚本,确保每次安装依赖时都启用 Husky。
  • 默认生成一个 pre-commit 钩子,里面执行 npm test

3. 添加和管理钩子

比如你想在每次提交代码前,先运行测试,可以执行:

bash 复制代码
npx husky add .husky/pre-commit "npm test"
git add .husky/pre-commit

这样,每次执行 git commit,都会先运行 npm test,测试失败则阻止提交。

4. 配置测试脚本

确保你的 package.json 中有对应的测试命令,例如:

json 复制代码
"scripts": {
  "test": "echo "测试通过" && exit 0"
}

真实项目中,这里通常是运行单元测试或其他验证脚本。

5. 配合 lint-staged 只检查变更文件(提升效率)

安装 lint-staged

bash 复制代码
npm install --save-dev lint-staged

package.json 中添加配置:

json 复制代码
"lint-staged": {
  "*.js": ["eslint --fix", "prettier --write", "git add"]
}

修改 .husky/pre-commit 文件内容:

text 复制代码
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx lint-staged

这样,提交时只会针对暂存区(即本次提交的文件)运行格式化和检查,速度更快。

6. 其他常用钩子示例

  • 推送前检查测试
bash 复制代码
npx husky add .husky/pre-push "npm test"
  • 提交信息校验(结合 commitlint)
bash 复制代码
npx husky add .husky/commit-msg "npx --no-install commitlint --edit "$1""

代码示例:完整的 Husky + lint-staged 配置

bash 复制代码
# 安装依赖
npm install husky lint-staged eslint prettier --save-dev

# 初始化 husky
npx husky install

# 在 package.json 添加 prepare 脚本
# "prepare": "husky install"

# 添加 pre-commit 钩子,运行 lint-staged
npx husky add .husky/pre-commit "npx lint-staged"

# package.json 配置示例
{
  "scripts": {
    "prepare": "husky install",
    "lint": "eslint . --ext .js,.jsx,.ts,.tsx",
    "format": "prettier --write ."
  },
  "lint-staged": {
    "*.{js,jsx,ts,tsx}": [
      "eslint --fix",
      "prettier --write",
      "git add"
    ]
  }
}

这样,每次提交时,Husky 会自动调用 lint-staged,只对改动的 JavaScript/TypeScript 文件运行 ESLint 和 Prettier,自动修复并格式化代码,保证提交的代码整洁规范。


卸载 Husky

如果不再需要 Husky,可以这样卸载:

bash 复制代码
npm uninstall husky
git config --unset core.hooksPath
rm -rf .husky

并从 package.json 中删除 "prepare": "husky install" 脚本。


总结

  • Husky 是管理 Git Hooks 的利器,帮助你在提交和推送代码时自动执行代码检查、格式化和测试。
  • 它极大地减少了人为疏忽,保证代码质量和团队协作效率。
  • 配合 lint-staged 使用,可以只检查改动文件,提升速度和体验。
  • 只需几条命令即可安装配置,适合所有使用 Git 的项目。

用 Husky,让你的代码提交更安全、更规范、更高效!

相关推荐
崔庆才丨静觅3 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60613 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了4 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅4 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅4 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅4 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment4 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅5 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊5 小时前
jwt介绍
前端
爱敲代码的小鱼5 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax