前言
上一篇文章介绍了通过eslint与prettier配合,实现代码质量与风格的控制,但需要vscode配置的配合才可生效,不具备强制性。本文将继续深入,通过husky、commmitlint、lint-staged的使用,保证远程仓库代码的质量与规范。
- husky,一款管理
git hooks
的工具 - commitlint,一款
git commit
提交规范检验工具 - lint-staged,一个对
git暂存区
代码进行处理的工具
husky
它将在我们提交代码时触发不同的钩子,执行不同脚本,帮忙我们自动化的处理一些任务,比如执行 eslint
命令等。
1. 安装
npm install husky -D
2. 配置
-
v9版本
- 执行配置脚本
npx husky init
- 添加钩子
echo "npm test" > .husky/pre-commit
- 执行配置脚本
-
v9之前版本
-
package scripts脚本添加prepare钩子,执行husky install
npm pkg set scripts.prepare="husky install"
-
执行配置脚本,自动创建 .husky/_git钩子相关文件
npm run prepare
-
添加pre-commit钩子,脚本为
npm test
npx husky add .husky/pre-commit "npm test"
-
版本差异可参照官方迁移教程
commitlint
commitlint 是当前使用最广泛的git提交规范检验工具,能够较好的帮助我们在项目开发中,对提交信息的 message
规范进行校验。
1. 安装
npm install -D commitlint @commitlint/cli @commitlint/config-conventional
- @commitlint/config-conventional 是基于
conventional commits
规范的配置文件。 - @commitlint/cli 是
commitlint
工具的核心。
2. 配置
增加 .commitlintrc.js
配置文件
module.exports = {
extends: ['@commitlint/config-conventional']
};
3. 结合husky,实现git commit规范校验
设置 commit-msg
hook
echo "npx --no-install commitlint -e $HUSKY_GIT_PARAMS" > .husky/commit-msg
lint-stated
lint-staged
工具可实现,只针对提交的代码文件进行检查处理。
1. 安装
npm install lint-staged -D
2. 配置
在package.json文件中增加内容
{
"scripts": [
"lint-staged": "lint-staged"
],
"lint-staged": {
"*.{js,ts,jsx,tsx}": [
"eslint --fix"
]
},
}
说明:
-
src/**/*.{js,jsx}
:匹配 src 目录下所有的 js 和 jsx 文件 -
匹配规则:
- ** 表示递归匹配目录
/*.{js,jsx}
会展开为/*.js /*.jsx
- 逆向匹配:
!(目录名1|目录名2)/**/*.{js,jsx}
匹配除了目录名1和目录名2外的所有目录下的js和jsx文件
3. 结合husky,实现对暂存区文件的校验
设置 pre-commit
hook
echo "npm run lint-staged" > .husky/pre-commit
总结
- husky用来管理git hooks,以此来增强git功能
- commitlint结合commit-msg钩子,实现提交规范的校验
- lint-staged结合pre-commit钩子,实现对暂存区文件的校验