一、开始
添加链接描述官网
1. 指南
①安装
安装@commitlint/cli和你选择的@commitlint/config-* / commitlint-config-*作为devDependency,并配置commitlint使用它。
②配置
将commitlint配置为使用常规配置
echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js
有关更多信息,请参阅配置文档。
2. 本地配置
根据提交消息在其被创建时对其进行检查,获得更高提交消息质量和更快速的反馈时间。
本指南将演示如何通过git钩子实现这一点。
请按照入门部分了解基本安装和配置说明。
① 添加钩子
要使用commit,你需要设置commit-msg钩子
a. 使用git的钩子管理器
要在提交创建之前进行检测,你可以使用Husky的commit-msg钩子。
您可以在官方文档中找到完整的安装说明。
注意📢:
以下说明适用于husky@v9,如果您使用的是不同的版本,请咨询您的版本的官方文档。
警告⚠️:
对于Windows用户:确保所有husky文件都是UTF-8编码的。如果使用任何其他格式,则可能在运行时抛出错误,例如无法执行二进制文件。
npm install --save-dev husky
npx husky init
# Add commit message linting to commit-msg hook
echo "npx --no -- commitlint --edit \$1" > .husky/commit-msg
作为一种替代方法,你可以在package.json中创建一个脚本
npm pkg set scripts.commitlint="commitlint --edit"
echo "npm run commitlint \${1}" > .husky/commit-msg
b. 使用git的钩子
有关git钩子的信息可以在git文档中找到
警告⚠️:
有必要使用commit-msg作为钩子文件的名称。
②测试
a.测试基础用法
对于提交的第一个简单的使用测试,你可以这样做:
npx commitlint --from HEAD~1 --to HEAD --verbose
这将检查您的最后一次提交,如果无效则返回错误,如果有效则返回正向输出反馈。
b.测试钩子
您可以通过简单地提交来测试钩子。如果一切正常,您应该看到类似这样的内容。
git commit -m "foo: this will fail"
# husky > commit-msg
No staged files match any of provided globs.
⧗ input: foo: this will fail
✖ type must be one of [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test] [type-enum]
✖ found 1 problems, 0 warnings
ⓘ Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint
husky - commit-msg script failed (code 1)
因为v8.0.0的commitlint不会输出任何东西,如果你的提交没有问题。
(您可以使用——verbose标志来获得正输出)
```bash
git commit -m "chore: lint on commitmsg"
# husky > pre-commit
No staged files match any of provided globs.
# husky > commit-msg
局部限制对于快速反馈来说很好,但可以很容易地进行修改。为了确保所有的提交都被限制,你也需要检查自动CI服务器上的提交。在CI安装指南中了解如何操作。
到此为止,实操开始的过程还是很痛苦。
我先自大的在公司的项目里直接使用commitlint 在安装husky和初始化的时候报错
无论是husky v9 还是v8 v7均有不同程度的报错。于是重新建立一个空项目后,在node 20.11.1的基础上安装最新v9成功,并逐步安装使用成功。
同时我查阅了4个小时的百度资料后,对commitlint和husky有了更进一步的了解。
commitlint是基于husky(哈士奇 哈哈哈~)git hooks进行的封装使用。
在多人协作的背景下,git 仓库和 workflow 的作用很重要。而对于 commit 提交的信息说明存在一定规范,现使用 commitlint + husky 规范 git commit -m “” 中的描述信息。
一句话说,当我们运行 git commmit -m ‘xxx’ 时,用来检查 xxx 是否满足固定格式的工具。简单来说,就是制定提交规范
可以根据需要自己定义配置内容的地方和格式:
根据官网步骤指南,在项目里我生成了