为项目编写良好的提交消息可能具有挑战性。当项目扩展并涉及许多开发人员时,可能会出现格式和写作风格的不一致之处。我们可以通过使用Conventional Commits规范来解决此问题,并使用commitlint配置我们的项目来执行此标准。
用GIT初始化项目
如果您已经在GIT中设置了一个项目,则需要将此功能添加到,请跳过配置commitlint 的部分。否则,请按照以下步骤在新项目中测试此功能。
- 在您的计算机上创建一个新的空目录,名为 git_better_demo
- 导航到 git_better_demo 终端中的目录
- 运行命令
git init
以用git初始化此目录。这将创建一个名为 .git/的隐藏目录 - 运行命令
npm init
以使用NPM初始化此目录。将提示您有关您的存储库的详细信息。您提供的详细信息将添加到您的软件包中。JSON,可以根据需要进行修改。要接受所有默认值,请按完整提示按Enter。 - 在您的首选IDE中打开。
配置commitlint
Windows用户的注意:
确保您在Windows PowerShell而不是命令提示符中。使用命令提示符时,以下命令无法正常工作。另外,请确保在步骤2中运行命令以创建commitlint.config.js,该文件必须为UTF-8才能工作(如果在VSCODE中,请检查右下角。它可以说UTF-16。手动调整)。
安装 @commitlint/cli和 @commitlint/config-contentional
-
在您的终端中运行命令
npm install --save-dev @commitlint/config-conventional @commitlint/cli
。这将安装commitlint命令行工具和commitlint配置,该配置可以实施传统的规定在您的项目中。 -
在终端中运行命令
echo "module.exports = { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js
。这将创建文件 commitlint.config.js ,并设置commitlint,以使用config-Concontentional软件包中使用预配置的规则
配置沙哑
我们将使用一个名为HUSKY的工具来运行Commitlint检查
- 通过运行
npx husky-init
在项目中初始化沙哑的。这将提示您安装husky-init
。按Enter继续进行。将在您的项目名为.husky
中创建一个隐藏的目录。 - 删除
.husky
目录下的 pre-commit 文件。这将不需要,将来可以再次添加。 -
在运行
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit "$1"'
使用git commit时,添加 commit-msg 挂钩以强制执行commitlint规则。这将提示您安装husky
。按Enter继续进行。您应该看到 commit-msg 文件出现在.husky
目录下。 -
通过运行
git commit -m "fail: this is a failing commit message"
测试commit-msg钩子是否处于活动状态。由于 Fail 是基于常规提交的一种无效类型,因此该提示将阻止您执行此消息。
这是开始编写更好的提交信息的好地方,但是使用 commitizen 和 cz-commitlint ,可以通过交互式体验来更好地做到这一点。
用CZ-Commitlint配置委员
-
运行命令
npm install --save-dev @commitlint/cz-commitlint commitizen inquirer@8
-
在
package.json
中,在脚本下添加"commit": "git-cz"
。
"scripts": { "commit": "git-cz" }
-
在软件包中。
"config": { "commitizen": { "path": "@commitlint/cz-commitlint" } }
-
仍在项目目录内的终端中,运行命令
npm run commit
。现在,您应该有一个交互式体验来创建传统提交规范之后的提交消息!
修改设置
所有这些设置都可以通过遵循commitlint提供的指南来修改。例如,如果我们决定要将 scope 的字符限制更改为50,请打开commitlint.config.js
文件并根据规则添加"scope-max-length": [2, "always", 50]
。
module.exports = {
extends: ["@commitlint/config-conventional"],
rules: {
"scope-max-length": [2, "always", 50],
},
};
这只是如何更改规则的一个小例子,但是Commitlint允许灵活性更改这些设置以满足您的需求。
概括
提交消息在开发过程中起着至关重要的作用。遵循传统提交等格式可以帮助您和您的团队以有组织的方式工作,并指导您更有意识地使用提交信息。使用常规提交也有various other benefits。
很高兴投入!
其他链接
Commitlint Local Setup Documentation
Commitlint Rules Documentation
Conventional Commits
Commitizen Repositories
Commitlint Respositories