使用 Dart 版 husky 和 commitlint 规范 Flutter 工程提交记录

663 阅读2分钟

image.png

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..20 代表禁用, 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