husky Git Hook 工具,为 git 提供一系列钩子函数,在提交前(pre-commit)、提交消息(commit-msg)等钩子触发时可以为我们执行一些脚本。
我们可以使用 husky 工具来进行代码提交前的自动格式化,以及 commit message 的校验。
- 首先安装 husky
pnpm add husky -D
- 初始化 husky
pnpm husky install
并在 package.json 中添加如下内容
{
"scripts": {
//...
"prepare": "husky install"
}
}
- 添加 git hook
pnpm husky add .husky/pre-commit
到这里之后我们还需要使用另外一个工具: lint-staged
,它是对 git 暂存区文件进行 lint 检查的工具。
- 安装 lint-staged
pnpm add lint-staged -D
- 在
package.json
中添加如下配置
{
//...
"lint-staged": {
"*.{js,ts,jsx,tsx}": [
"prettier --write",
"eslint --fix"
],
"*.vue": [
"stylelint --fix",
"prettier --write",
"eslint --fix"
],
"*.{less,css}": [
"stylelint --fix",
"prettier --write"
]
}
}
- 在
.husky/pre-commit
文件中写入以下内容
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
pnpm lint-staged
经过以上配置之后,我们就可以在每次提交之前对所有代码进行格式化,保证线上代码的规范性。
在实际中如果遇见
Use the --allow-empty option to continue, or check your task configuration
这个问题。我们可以修改
pnpm lint-staged
为pnpm lint-staged --allow-empty
来暂时屏蔽这个问题。