Conventional Commit 规范化提交入门

Person typing on apple keyboard
Published on
/6 mins read/---

介绍

Conventional commit(规范化提交)是一种特定的提交形式,为软件开发者提供了一个统一的系统来组织和描述他们的变更,使追踪更新变得更加容易。 这种类型的提交通常遵循严格且一致的格式,使人们更容易理解做了什么变更以及为什么要做这些变更。

规范化提交通常遵循特定的格式,如:

<type>[optional scope]: <description>

其中type是提交的主题,它表示所做变更的类型,应该是以下类型之一:

  • feat: 功能或项目的新增内容
  • fix: 错误修复
  • refactor: 代码重构或项目基础设施的变更
  • style: 格式、空白符等样式变更
  • docs: 文档变更
  • perf: 提高性能的代码变更
  • chore: 小的变更,如更新依赖版本、修复拼写错误等
  • ...

scope是可选的,用于指示项目中被变更的部分,如apiuidatabase等。

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

文件应该包含以下内容:

commitlintcommitlint.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

总结

规范化提交是确保提交信息有组织和一致的好方法。 通过遵循规范化提交格式, 团队可以轻松创建遵循相同结构和格式的提交信息, 使审查和理解所做的变更变得更加容易。

因此,在开发项目时使用这种类型的提交很重要,这样变更就能得到良好的记录和追踪。

愉快地提交吧🍻