简介
husky是一款支持全部git hooks,用以当您在 提交代码 和 推送远程 时检查您的提交信息,运行测试,检查code的工具
特点
- 零依赖、轻量(
6 kb) - 由最新的Git功能支持
- 可以支持
npm和Yarn安装 - 用户友好的信息
开始
以下文章采用husky7记录学习,husky迁移V4 -> V7,迁移Husky
并且由于husky使用到了所有的git hooks,因此项目所在目录必须被git init;目录中包含.git,以及目录下的所有git hooks命令。
自动安装
因为个人对自动安装不太感冒,而且平时日常工作使用手动安装和配置。因此本文不体现自动安装 typicode.github.io/husky/#/?id…
手动安装
- 初始化本地依赖以及Git仓库
npm init -y
git init
- 安装
husky
npm install husky --save-dev
- 激活 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
尝试一次提交
git commit -m "Keep calm and commit"
如果 npm test 命令失败了,则会立即停止提交。
其他使用
-
建议将husky添加到根目录的
package.json中,方便您在使用例如 lerna 之类的工具时只用来运行修改过的脚本 -
或者也可以更改husky的安装目录(不太建议如下做法) 因为
husky install必须与.git在同一目录。详细请参考:typicode.github.io/husky/#/?id…
// package.json
{
"scripts": {
"prepare": "husky install .config/husky"
}
}
- 绕过 hooks
通过使用
-n或者--no-verify绕过诸如pre-commit和commit-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-commit、commit-msg 阶段中执行部分命令,后续章节会讲解项目中经常使用的lint-staged、commitizen;
结合上述知识,完成一个 标准化的提交 和对用户友好的 commit message