husky
# 介绍
配合git hooks可以帮我们做许多事情(检查您的提交消息、运行测试、检查代码等)。常见的hooks有pre-commit,commint-msg,pre-push。支持所有 Git (opens new window) 钩子。
gitHooks(常用hooks)
pre-commit
:钩子在键入提交信息前运行。prepare-commit-msg
:钩子在启动提交信息编辑器之前,默认信息被创建之后运行。commit-msg
:钩子接收一个参数,存有当前提交信息的临时文件的路径。 如果该钩子脚本以非零值退出,Git 将放弃提交, 因此,可以用来在提交通过前验证项目状态或提交信息。post-commit
:钩子在整个提交过程完成后运行。
# 安装、配置
# 老版本
v4.x是老版本,v5以后就不太一样了。我们这里以v4.2.5为例。
1.安装
yarn add husky@4.2.5 -D
2.配置
在packgae.json中添加husky配置,配置完成,接下来就可以正常使用了。
"dependencies": {
// ...
},
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
},
2
3
4
5
6
7
8
9
# 新版
v5.x后,我们称之为老版本
1.安装husky
yarn add husky -D
2.在packgae.json中添加prepare脚本
{
"scripts": {
"prepare": "husky install"
}
}
2
3
4
5
prepare脚本会在npm install(不带参数)之后自动执行。也就是说当我们执行npm install安装完项目依赖后会执行 husky install命令,该命令会创建.husky/目录并指定该目录为git hooks所在的目录。
3.添加git hooks,运行一下命令创建git hooks
npx husky add .husky/pre-commit "npm run test"
运行完该命令后我们会看到.husky/目录下新增了一个名为pre-commit的shell脚本。也就是说在在执行git commit命令时会先执行pre-commit这个脚本。pre-commit脚本内容如下:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npm run test
2
3
4
可以看到该脚本的功能就是执行npm run test这个命令
# 新旧版本对比
关于新版本的husky,比老版本多了一个动作。
老版本:安装 ——> 配置
新版本:安装 ——> 启用 ——> 生成 .husky相关配置
步骤:
1、npm install husky --save-dev 安装
2、npx husky install 手动启用husky
3、npx husky add .husky/pre-commit "npm run lint-staged" 生成husky配置文件(执行完这一步,根目录会有一个 .husky目录)
# 使用
# 配置pre-commit
# 旧版
在packgae.json中添加husky配置,配置完成,接下来就可以正常使用了。
"dependencies": {
// ...
},
"husky": {
"hooks": {
"pre-commit": "lint-staged",
}
},
2
3
4
5
6
7
8
# 新版
yarn husky add .husky/pre-commit "yarn lint-staged"
# 配置commit-msg
# 旧版
"dependencies": {
// ...
},
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
},
2
3
4
5
6
7
8
# 新版
npx husky add .husky/commit-msg 'yarn --no-install commitlint --edit "$1"'