使用Husky方法

595 阅读2分钟

Husky 是一个用于管理 Git 钩子(Git Hooks) 的工具,能够帮助开发者在 Git 操作的特定阶段(如提交代码、推送代码前)自动触发自定义脚本,常用于代码规范检查(如 ESLint)、测试运行、提交信息格式化等场景,确保团队代码质量的一致性。

Husky 的核心作用

  • 自动化流程:在 git commitgit push 等操作前/后自动执行命令(如代码检查、测试)。
  • 拦截违规操作:若脚本执行失败(如测试不通过、代码格式错误),则阻止 Git 操作。
  • 团队协作:通过 Git 钩子统一开发规范,减少人工检查成本。

1.使用yarn下载husky相关依赖

  • husky:用于管理 Git Hook。
  • commit - lint:用于校验提交信息。
  • @commit - lint/config - conventional:提供了基于 Conventional Commits 规范的配置,我们可以基于此并结合你的自定义规范进行调整。
​
yarn add -D @commitlint/cli  @commitlint/config-conventional husky
​

2.初始化husky

启用git钩子功能

yarn husky install

(可选) 在package.json中添加prepare脚本,确保新克隆项目时会自动安装钩子

{
    “scripts”:{
        “prepare”:"husky install"
        }
}

3.创建一个自定义的 commitlint 配置文件( commitlint.config.js ):

module.exports = {
 rules: {
  'type-enum': [2, 'always', [
   'add',   // 新增功能或文件
   'update',  // 更新功能
   'fix',   // 修复bug
   'ui',    // 更新UI
   'style',  // 样式修改
   'init',   // 初始化
   'docs'   // 文档修改
  ]],
  'type-empty': [2, 'never'],
  'subject-empty': [2, 'never'],
  'type-case': [2, 'always', 'lower-case'],
  'subject-case': [0]
 }
};

4.添加Git钩子

4.1.创建钩子脚(提交完前执行lint检查) (会生成.husky/pre-commit文件 ,内容包含了npm run lint 命令) ***** 语法命令未生效

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

可以使用手动创建

.husky/pre-commit 文件中添加以下内容

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
​
yarn lint

4.2.1手动创建一个.husky 目录下的 commit-msg文件 (git提交commit信息语法格式是否满足检查)文件:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
​
npx --no -- commitlint --edit $1

4.2.2然后给这个文件添加执行权限

git update-index --chmod=+x .husky/commit-msg

常用钩子示例

钩子名称触发时机典型用途
pre-commit提交代码前运行 lint、测试、代码格式化
commit-msg检查提交信息格式时使用 commitlint 规范提交信息
pre-push推送代码到远程仓库前运行完整测试套件