介绍
Conventional commit(规范化提交)是一种特定的提交形式,为软件开发者提供了一个统一的系统来组织和描述他们的变更,使追踪更新变得更加容易。 这种类型的提交通常遵循严格且一致的格式,使人们更容易理解做了什么变更以及为什么要做这些变更。
规范化提交通常遵循特定的格式,如:
<type>[optional scope]: <description>
其中type
是提交的主题,它表示所做变更的类型,应该是以下类型之一:
- feat: 功能或项目的新增内容
- fix: 错误修复
- refactor: 代码重构或项目基础设施的变更
- style: 格式、空白符等样式变更
- docs: 文档变更
- perf: 提高性能的代码变更
- chore: 小的变更,如更新依赖版本、修复拼写错误等
- ...
scope
是可选的,用于指示项目中被变更的部分,如api、ui、database等。
description
是变更的简短描述,应该用祈使语气编写,如"change"而不是"changed"或"changes"。
示例:
feat(api): send an email to the customer when a product is shipped
或
fix: prevent racing of requests
为什么要使用规范化提交?
规范化提交有助于确保提交是有组织的和一致的。这使得阅读和理解所做的变更以及原因变得更加容易。它还使得追踪和理解相关的问题和拉取请求变得更加容易。
通过遵循规范化提交格式,团队还可以轻松创建遵循相同结构和格式的提交信息。这使得审查和理解所做的变更变得更加容易,也确保每次都以相同的方式记录变更。
此外,规范化提交是保持项目代码库有组织和一致的好方法。这有助于确保代码库易于维护和阅读,同时减少在调试和重构上花费的时间。
为项目设置规范化提交
在这篇文章中,我将向你展示如何使用commitlint为你的项目设置规范化提交
1️⃣ 安装commitlint及其依赖:
npm install -g @commitlint/cli @commitlint/config-conventional
2️⃣ 为项目添加commitlint配置文件:
使用此命令创建带有基本配置的配置文件:
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
文件应该包含以下内容:
module.exports = { extends: ['@commitlint/config-conventional'] }
3️⃣ 添加husky
来在创建提交之前对其进行检查:
npm install husky --save-dev
使用以下命令激活钩子:
npx husky install
你应该看到以下输出:
husky - Git hooks installed
并且在项目根目录下应该创建了一个新的.husky
文件夹。
💡 我强烈建议在package.json文件中添加postinstall
脚本,以在安装依赖后自动安装husky钩子:
"scripts": {
"postinstall": "husky install"
}
4️⃣ 添加commit-msg
钩子来检查提交:
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit ${1}'
你应该看到在.husky
文件夹中创建了一个commit-msg
文件。
就是这样🎉!现在,每当你提交时,commitlint都会检查你的提交信息,确保它遵循规范化提交格式。
让我们用一个不规范的提交信息来试试:
git commit -m "Using commitlint and husky to lint commits"
提交应该失败并显示以下错误:
⧗ input: Using commitlint and husky to lint commits
✖ subject may not be empty [subject-empty]
✖ type may not be empty [type-empty]
✖ found 2 problems, 0 warnings
ⓘ Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint
husky - commit-msg hook exited with code 1 (error)
如你所见,commitlint检测到提交信息没有遵循规范化提交格式,并提供了有用的错误信息。
现在,让我们用规范化提交信息再试一次:
git commit -m "feat: add commitlint and husky to lint commits"
提交应该成功并显示以下输出:
[main b40785f] feat: using husky to lint commits
3 files changed, 27 insertions(+)
create mode 100755 .husky/commit-msg
总结
规范化提交是确保提交信息有组织和一致的好方法。 通过遵循规范化提交格式, 团队可以轻松创建遵循相同结构和格式的提交信息, 使审查和理解所做的变更变得更加容易。
因此,在开发项目时使用这种类型的提交很重要,这样变更就能得到良好的记录和追踪。
愉快地提交吧🍻