git 篇
前言
今日分享的话题是 配置 git 提交校验规则以及提交前进行代码 lint 的校验和修复
-
? 1、我们先了解一下当我们执行 git commit -m 'XXX'的时候,都会执行什么(在安装了 husky 的情况下)
-
? 1.1 首先我们下载安装 husky 的 3.*版本
npm install husky -D
-
? 1.2 首先我们执行
git add ./ git commit -m 'XXX'
当我们执行完 git commit 命令之后(我只里只是说一下大致的执行顺序,git 还有其他 hook)
- 首先先会去我们的 package.json 中获取到 pre-commit 钩子的执行命令
- 然后吧我们这个命令拿到之后会在 husky 包中的 run.js=>lib/runner/index.js 文件中会执行我们的命令
sh myprecommit.sh #里面内容应该就是我们的校验命令
- 这个命令可能是校验我们代码的规范如:lint-staged
{ "lint-staged": { "*.scss": [ "prettier --write", "stylelint -s scss --config 你的stylelint文件 --fix", "git add" ], ".{ts,tsx}": [ "node 你的prettier文件 --write", "node 你的eslint文件", "git add" ] } }
- 然后会执行我们 package.json 中的的配置项中的这个配置项中的命令
❓:为啥我直接执行那些 shell 命令不行呢会报错?
?:所处环境不同,由于一些依赖不是全局安装的,所以无法找到该命令,而你将该脚本写在 package.jons 的 script 中,则 npm 会自动查找本地项目的 node_modules/.bin 目录,并将其添加到临时的 PATH 环境变量中
-
? 1.3 当我们前面的那些校验设置完毕之后,接下来会解析我们的 commit 信息
首先他会执行我们 pageage.json 中的 hook: commit-msg:"你的命令"
以下是思路:
❓:怎么获取我们的提交信息?
?: Husky 库提供的一个环境变量,用于获取 Git 的提交参数
❓:写一个自定义正则表达式去匹配这个信息是否正确
? /^你的正则/.test(commitMsg) // 如果这个通过则啥也不干没通过则终止退出terminal
-