Commitlint

    Commitlint 是一个用于检查提交信息(commit message)的工具,确保提交信息符合特定的格式和约定。它常与 Husky 一起使用,以在提交代码之前自动验证提交信息的格式。


    步骤 1:安装 Commitlint

    1pnpm add --save-dev @commitlint/{cli,config-conventional}

    步骤 2:配置 Commitlint

    创建 commitlint.config.js 配置文件,定义提交信息的规则:

    1/**
    2 * 导出一个默认对象,该对象包含了 commitlint 的配置
    3 * 该配置继承自 @commitlint/config-conventional,并自定义了一些规则
    4 */
    5export default {
    6  // 继承自 @commitlint/config-conventional
    7  extends: ['@commitlint/config-conventional'],
    8  // 自定义规则
    9  rules: {
    10    // 允许的提交类型
    11    'type-enum': [
    12      2, // 规则的错误级别,2 表示错误
    13      'always', // 规则的应用时机
    14      [
    15        // 允许的提交类型列表
    16        'feat', // 提交新特性
    17        'fix', // 修复 bug
    18        'docs', // 文档更新
    19        'style', // 代码格式 (不影响代码运行的变动),注意不是css修改
    20        'refactor', // 代码重构
    21        'perf', // 优化相关,比如性能优化
    22        'test', // 测试用例更新
    23        'chore', // 其它修改,比如构建过程或辅助工具的变动
    24        'revert', // 回滚到上一个版本
    25        'build', // 编译相关的修改,例如发布版本、对项目构建或依赖的改动
    26      ],
    27    ],
    28    // 提交类型的大小写
    29    'type-case': [0], // 0 表示关闭该规则
    30    // 提交类型是否允许为空
    31    'type-empty': [0], // 0 表示关闭该规则
    32    // 提交范围是否允许为空
    33    'scope-empty': [0], // 0 表示关闭该规则
    34    // 提交范围的大小写
    35    'scope-case': [0], // 0 表示关闭该规则
    36    // 提交主题是否允许以句号结尾
    37    'subject-full-stop': [0, 'never'], // 0 表示关闭该规则,'never' 表示不允许以句号结尾
    38    // 提交主题的大小写
    39    'subject-case': [0, 'never'], // 0 表示关闭该规则,'never' 表示不允许改变大小写
    40    // 提交头的最大长度
    41    'header-max-length': [0, 'always', 72], // 0 表示关闭该规则,'always' 表示总是检查,72 表示最大长度
    42  },
    43}

    步骤 3:集成 Husky 和使用 Commitlint

    package.json 中配置 scripts 命令:

    1{
    2  "scripts": {
    3    "commitlint": "commitlint --config commitlint.config.js -e -V"
    4  }
    5}

    配置 Husky 钩子,以便在提交消息阶段自动运行 Commitlint:

    1npx husky add .husky/commit-msg

    在生成的 commit-msg 文件中添加以下脚本:

    1#!/usr/bin/env sh
    2. "$(dirname -- "$0")/_/husky.sh"
    3
    4pnpm commitlint

    现在,当你提交代码时,Commitlint 将确保你的提交信息符合预定义的格式。例如,提交信息必须以特定的类型开头,如 feat:,并遵循一定的风格指南。