Git 提交信息对于跟踪和记录一个工程的变更记录来说是十分重要的,对于多人合作的项目而言,统一的提交信息格式更有利于协作者知晓每一次提交的变更。
目前社区中比较流行的是遵循 Conventional Commit 规范来编写提交信息。
为了保证每一次的提交信息都遵循该规范,诞生了一些检测的工具,今天要介绍的 commitlint 正是其中之一(JavaScript 版本的 commitlint 已在前端社区中广泛流行)。
下面简单介绍下如何使用:
添加依赖
在项目的 pubspec.yaml 里的 dev_dependencies 部分,添加 commitlint_cli 依赖
dev_dependencies:
#... others
commitlint_cli: ^0.4.1
或者直接通过命令行添加:
dart pub add --dev commitlint_cli
添加配置
在项目根目录下添加 commitlint.yaml 文件,并配置当前项目需要遵循的规则集 rules,目前已经支持的所有规则可以看官方文档。可以根据需要,按需配置项目的规则,也可以继承并使用 commitlint_cli 里自带的默认规则。
按需配置:每一项规则的配置分为三个部分:
- 第一部分是等级,必须,取值
0..2,0代表禁用,1代表警告,2代表错误 - 第二部分是触发条件,必须,取值
always|never - 第三部分是规则的可用值,部分规则必须,结合[第二部分]使用
例如:
rules:
type-enum:
- 2
- always
- - chore
- ci
- docs
- feat
- fix
- perf
- refactor
- style
scope-enum:
- 2
- always
- - deps
- release
- test
直接继承:可在 commitlint.yaml 直接通过 include: package:commitlint_cli/commitlint.yaml 引入 commitlint_cli 默认使用的规则集。
测试
> echo 'foo: bar' | dart run commitlint_cli
⧗ input: foo: bar
✖ type must be one of [chore, ci, docs, feat, fix, perf, refactor, style] type-enum
✖ found 1 errors, 0 warnings
自动化检测
为了保证每次提交时,都能够自动检测提交信息,需要添加 Git 的 commit-msg 钩子。借助于 husky package 可以很方便的管理 Flutter 项目的 Git 钩子。( 使用 husky 管理 Flutter 和 Dart 项目的 git 钩子)
dart pub add --dev husky
dart run husky install
配置 commit-msg 钩子
dart run husky install
dart run husky add .husky/commit-msg 'dart run commitlint_cli --edit $1'
这样,每次进行 Git 提交时,提交消息都将根据 commitlint.yaml 中配置的规则集通过 commitlint_cli 进行检测。
将 .husky 目录提交到后,团队协作的其他开发者拉取代码后只需要在本地执行 husky install 即可在本地设置 Git commit-msg 钩子。
dart pub get # 或者 flutter pub get
dart run husky install # 或者 flutter pub run husky install