husky作用就是在git执行一些操作的时候触发一些钩子,在钩子处执行一些自己需要的命令,比如代码的eslint校验等。最佳实践一般是校验两处,eslint(代码规范)及commit message规范
先安装husky:
yarn add -D husky
在项目根目录创建.huskyrc配置文件,内容如下:
{
"hooks": {
"pre-commit": "lint-staged",
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
其中pre-commit是commit的钩子,会在commit之前执行下lint-staged命令。commit-msg是提交时message的检测钩子,commit前会执行 commitlint -E HUSKY_GIT_PARAMS命令。这里面的两种命令需要安装两个npm包
一个是lint-staged:
yarn add -D lint-staged
一个是commitlint
yarn add -D @commitlint/{cli,config-conventional}
项目根目录添加lint-staged的配置文件.lintstagedrc,内容如下:
{
"*.{js,json,css,md}": [
"prettier --write",
"git add"
],
"*.{ts,tsx}": [
"eslint --fix",
"prettier --write",
"git add"
],
}
里面涉及到有prettier,eslint命令,对应的npm包也需要单独安装,建议安装到全局。
然后项目根目录继续添加commitlint的配置文件commitlint.config.js,内容如下:
module.exports = { extends: ['@commitlint/config-conventional']};
这样,每次执行git commit -m "xxxx"的时候,就会自动检查代码规范,以及检查message格式了,不符合要求则提交失败。如果特殊情况下不需要检测则执行:
git commit -m "xxxx" --no-verify