学习笔记-Husky

591 阅读2分钟

简介

husky是一款支持全部git hooks,用以当您在 提交代码推送远程 时检查您的提交信息,运行测试,检查code的工具

特点

  1. 零依赖、轻量(6 kb
  2. 由最新的Git功能支持
  3. 可以支持npmYarn安装
  4. 用户友好的信息

开始

以下文章采用husky7记录学习,husky迁移V4 -> V7,迁移Husky

并且由于husky使用到了所有的git hooks,因此项目所在目录必须被git init;目录中包含.git,以及目录下的所有git hooks命令。

image.png

自动安装

因为个人对自动安装不太感冒,而且平时日常工作使用手动安装和配置。因此本文不体现自动安装 typicode.github.io/husky/#/?id…

手动安装

  1. 初始化本地依赖以及Git仓库
npm init -y
git init
  1. 安装 husky
npm install husky --save-dev
  1. 激活 Git Hooks install 默认为 .husky
npx husky install

命令执行成功后,会在本地创建一个 .husky目录,里面存放有husky.sh的bash脚本

创建Hook

为Hook添加一条命令或者创建一个新的hook,请在运行 husky install 后执行下面的命令

命令格式

husky add [file] [cmd]

  • file: .husky/[git hooks]
  • cmd(字符串格式): "npm run xxx"

示例

npx husky add .husky/pre-commit "npm test" 
git add .husky/pre-commit

image.png

尝试一次提交

git commit -m "Keep calm and commit"

如果 npm test 命令失败了,则会立即停止提交。

其他使用

  1. 建议将husky添加到根目录的 package.json中,方便您在使用例如 lerna 之类的工具时只用来运行修改过的脚本

  2. 或者也可以更改husky的安装目录(不太建议如下做法) 因为 husky install 必须与 .git 在同一目录。详细请参考:typicode.github.io/husky/#/?id…

// package.json
{
    "scripts": { 
        "prepare": "husky install .config/husky"
    }
}
  1. 绕过 hooks 通过使用 -n 或者 --no-verify 绕过诸如 pre-commitcommit-msg 等hooks
git commit -n -m 'hello'
git commit --no-verify -m 'hello'

对于没有 --no-verify 的git指令时,你可以使用 HUSKY 的环境变量(不过这个 --no-verify 指令一般来说都有的)

HUSKY=0 git push # yolo!

总结

在工作中经常会使用 husky 在 pre-commitcommit-msg 阶段中执行部分命令,后续章节会讲解项目中经常使用的lint-stagedcommitizen; 结合上述知识,完成一个 标准化的提交 和对用户友好的 commit message