【开发规范建设系列】Commit Message 规范

前言

Commit Message 是开发的日常操作,写好 Message 有以下好处

  • 自动化、丰富的变更日志
  • 自动版本升级
  • 方便 Review

对项目的管理是非常重要的,但是在实际的工作中常常被大家忽略,希望通过本文,能够帮助大家重视 Commit Message 的规范书写。

下图为知名开源库 redux 的部分提交记录

image.png

下图为知名开源库 ant-design 的提交记录

image.png

可以看出 ant-design 的提交是非常规范的,基本可以根据 Commit Message 知道本次提交的内容,而 redux 的提交记录就比较随意。

为了使团队 Commit Message 变的更加规范,使每次 Commit Message 有更大的意义和作用,从而帮助团队更好的维护工程,建立一套类似于 ant-design 规范是相当于有必要的

Commit Message 规范

Commit Message 由 Header(必填)、Body(选填)、Footer(选填)这三部分组成,格式如下:

<type>(<scope>): <subject>

<BLANK LINE>
<body>
<BLANK LINE>
<footer>

Header

Header 部分只有一行,包括三个字段:type(必填)、scope(选填)、subject(必填),格式如下:

<type>(<scope>): <subject>

type

type 用于说明 commit 的类别,只允许使用下面的标识

  • feat: 一个新功能
  • fix: 一个缺陷修复
  • docs: 文档更改
  • style: 对代码意义无影响的更改(空白、格式化、缺少分号等)
  • refactor: 重构,既不修复错误也不添加新功能的代码更改
  • perf: 一个改善性能的代码更改
  • test: 添加缺失的测试或修正现有测试
  • ci: 对持续集成(CI)配置文件和脚本进行的更改
  • chore: 不修改源代码(src)或测试文件(test)的其他更改
  • revert: 撤销先前的提交

scope

用于说明 commit 影响的范围,视项目不同而不同。

subject

用于描述 commit 的概要,具体要求如下:

  • 简要准确的描述本次提交的变动,字符数量不超过 80
  • 第一个字母小写(可以使用中文)
  • 以动词开头,使用第一人称现在时,比如 change,而不是changedchanges
  • 不以标点符号结尾

Body

本次 commit 的详细描述,可以分成多行,具体要求如下:

  • 详细有条理的描述本次提交的变动,例如具体的变更、影响的范围等
  • 可写多行,每行不超过 72 个字符,整体建议不超过 200 个字符

Footer

用于描述 commit 的补充内容,例如关联的 Issue 和 关闭的 Issue

  • 关联 Issue: 格式: Issue #1
  • 关闭 Issue: 格式: Close #1, #2, #3

规范示例

feat 类日志示例

feat(内容监控): 设备模块添加相关逻辑

fix 类日志示例

fix(设备中心): 修复设备中心直播流无法查看

问题原因: 基础包升级导致
解决方案: 锁定版本
影响范围: 摄像机类设备详情页

Close #12, #13

docs 类日志示例

docs(button): 添加 disabled 属性说明

style 类日志示例

style(login): 去除无用空格

refactor 类日志示例

refactor(device): 抽取 BaseInfo 部分为独立组件

perf 类日志示例

perf: 优化权限验证逻辑,提升计算性能

test 类日志示例

test(button): 添加点击事件测试用例

ci 类日志示例

ci: 添加构建脚本

chore 类日志示例

chore(antd): antd 由 v5.2.0 升级至 v5.3.0
chore: 删除调试代码

revert 类日志示例

revert(event): 回滚事件处理流程添加处理人逻辑

规范落地

团队的每个人的开发习惯各不相同,新的规范的制定出来,如何保证大家都遵从是一个很有挑战的事情,这里会使用社区比较成熟的工具保证规范的落地。

commitlint 可以帮助我们校验 Commit Message,下面将介绍详细的介入步骤

安装依赖

这里以 pnpm 为例

pnpm i -D @commitlint/cli @pasny/commitlint-config

添加配置

项目跟目录新建 commitlint.config.js,写入

module.exports = {
  extends: ['@pansy/commitlint-config']
}

结合 husky

校验 Commit Message 的最佳方式是结合 git hook, 所以需要配合 [Husky]typicode.github.io/husky/).

详细介绍,可查看 husky,这里不做累述。

替代 git commit

利用 @commitlint/prompt-cli ,可以交互式的生产规范的 Commit Message,具体接入步骤如下

  1. 安装依赖
pnpm i -D @commitlint/prompt-cli

2. 在 package.json 添加如下代码

"scripts": {
  "commit": "commit"
},

后续就可以直接使用 pnpm commit 替换 git commit

当然比较熟悉该规范的,还是直接使用 git commit 效率更高

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYQVCDSe' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片