1. Husky的原理:
- Husky接入Git hooks,并在需要的某些阶段运行脚本
- git hooks: a. Git hooks可以设置在Git生命周期的在某些事件下运行的脚本: (1). 两组钩子:客户端的和服务器端的: 1. 客户端钩子用于如提交、合并的操做所调用 2. 服务器端钩子用于如接收被推送的提交等的联网操做 b. 事件包括提交的不同阶段: (1). 提交之前:pre-commit (2). 提交之后:post-commit c. 允许开发人员运行自定义代码任务、运行其它自动化脚本来执行合适的代码规范及标准
(1). 安装包并执行prepare脚本:
// 1. 安装包
yarn add husky@^8.0.3 -D
// 2. 增加package.json脚本prepare脚本
{
"script": {
"prepare": "husky install",
"cp": "node cp.js"
}
}
// 3. 执行一下prepare脚本
yarn prepare
(2). 添加hook:
// 将&替换成&&后,cp.js脚本执行完毕后终端不会退出
npx husky add .husky/pre-commit "npm run cp && git add ."
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npm run cp && git add .
作用:
- .husky目录下新增了一个名为pre-commit的shell脚本
- 在执行git commit命令时,会先执行pre-commit这个脚本
注:
- 场景分析: a. 需要执行cp.js来copy一些文件: (1). 执行完cp.js脚本后生成、修改的文件都算在本次提交内的提交 b. 如果没有执行git add .,每次执行完cp.js后修改的文件都不会被重新提交进来 c. 会导致每次提交完代码后都有一个修改的文件还在工作区
- 需要在pre-commit的hooks里面&& git add .
- 在执行git commit的时可以一起提交