提交代码的时候,能够根据自定义的提交信息、代码规范进行自动校验,避免多人协作开发时提交代码信息不准确或者代码格式的不统一。
Husky
1、安装 husky
npm install husky --save-dev
2、在项目中安装 husky
npx husky install
查看一下git配置,我们可以发现core.hooksPath指向为.husky。这里涉及husky实现原理:替换.git/hooks的目录为自定义目录,且该目录会提交到远程仓库。
3、添加 husky install 到 package.json scripts 中
为了让其他人在此项目中安装依赖后也能自动创建.husky目录并指定该目录为git hooks所在的目录,我们需要在package.json里面添加一条脚本命令"prepare": "husky install"
,然后执行npm run prepare
安装好husky之后,需要配置检测规则。
Commitlint
该工具用于帮助我们规范提交信息
1、安装 commitlint
cnpm install @commitlint/config-conventional @commitlint/cli --save-dev
2、在项目根目录创建 commitlint.config.js 文件
module.exports = {
// 忽略部分
ignores: [(commit) => commit.includes("init")],
// 继承的规则
extends: ["@commitlint/config-conventional"],
// 定义规则类型
rules: {
"body-leading-blank": [2, "always"],
"footer-leading-blank": [1, "always"],
"header-max-length": [2, "always", 108],
"subject-empty": [2, "never"],
"type-empty": [2, "never"],
// type 类型定义,表示 git 提交的 type 必须在以下类型范围内
"type-enum": [
2,
"always",
[
"feat", // 新增feature
"fix", // 修复bug
"perf", // 优化相关,比如性能、体验的提升
"style", // 仅仅修改了空格、格式缩进、逗号等等,不改变代码逻辑;
"docs", // 仅仅修改了文档,比如README, CHANGELOG, CONTRIBUTE等等;
"test", // 测试用例,包括单元测试、集成测试等
"refactor", // 代码重构,没有加新功能或者修复bug
"build",
"ci",
"chore", // 改变构建流程、或者增加依赖库、工具等
"revert", // 回滚到上一个版本
"wip",
"workflow",
"types",
"release",
],
],
},
};
3、使用 commit-msg 钩子规范化提交信息
使用以下命令快速创建git hooks的commit-msg钩子,这样每次commit的时候都会由 commitlint对commit信息进行一次检验。
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'
4、提交git commit 测试