conventional commit(约定式提交)

前言


此篇文档基于 21 年年终述职大家提出的开发规范化管理和文档化管理的建议,结合 Conventional Commits 约定式提交规范 对 git 代码作出提交规范化。

那什么是 Conventional Commits 约定式提交规范 呢?

定义


Conventional Commits 是一种用于给提交信息增加人机可读含义的规范。它提供了一组用于创建清晰的提交历史的简单规则。

提交说明的结构如下:

<类型>([可选的作用于]): <描述>

[可选的正文]

[可选的脚注]

作用


  • 自动化生成 CHANGELOG
  • 基于提交类型,自动决定语义化的版本变更
  • 向项目相关合作开发者发送变更信心
  • 触发自动化构建和部署流程
  • 给开发者提供一个更加结构化的提交历史,便于减低对项目做贡献的难度

使用流程


git commit 最佳实践,cimmitizen + husky + commitlint 规范化校验

cimmitizen

  1. 执行以下命令
npm install -g commitizen

npm install -g cz-conventional-changelog

echo '{"path":"cz-conventional-changelog"}' > ~/.czrc
  1. 测试功能

执行 git cz 提交代码,出现以下流程

// 选择一个提交的类型
1. select the type of change that you're committing
type 含义
feat 新增功能
fix 修复 bug
docs 更改文档
style 不影响代码含义的变化(空白,格式化,缺少分号等)
refactor 重构,不修复 bug 且不添加功能
perf 性能优化代码
build 构建方面相关

// 更改影响的范围,可不填
2. What is the scope of this change (e.g. component or file name): (press enter to skip)

// 简短的描述
3. Write a short, imperative tense description of the change (max 88 chars)

// 具体描述
4. rovide a longer description of the change: (press enter to skip)

// 是否有破坏性的更改
5. Are there any breaking changes?

// 是否有关联性的问题
6. Does this change affect any open issues?

如下图:


cz流程.png

git log 查看提交日志

log.png

由上图可以看出,提交了一个 fix(test)项,也是符合了约定式提交规范

husky

  1. 安装 husky

npm install husky —save-dev

  1. 安装 git hooks
方法1:
npx husky install

方法2:配置package.json文件中script: "prepare": "husky install"
npm run prepare

  1. 测试 husky 钩子,添加 pre-commit 钩子
npx husky add .husky/pre-commit "npm test"

根目录.husky 文件夹下生成 pre-commit 文件,删除 pre-commit 钩子只需删除文件即可

commitlint

  1. 安装
npm install -g @commitlint/cli @commitlint/config-conventional
  1. 生成规范配置文件
echo "module.export = {extends:['@commitlint/config-conventional']}" > commitlint.config.js
  1. 根目录.husky 文件夹下 pre-commit 文件中添加规则
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'
  1. 在 commitlint.config.js 文件中写入规则
module.exports = {
  extends: ["@commitlint/config-conventional"],
  rules: {
    "type-enum": [
      2,
      "always",
      [
        "build",
        "ci",
        "chore",
        "docs",
        "feat",
        "fix",
        "perf",
        "refactor",
        "revert",
        "style",
        "test",
      ],
    ],
  },
};
  1. 测试提交功能
git add .
git commit -m 'xxx'

执行完上两步操作后,终端出现报错:

⧗   input: xxx
✖   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)

两个报错:1. 缺少类型参数 2. 缺少描述信息
碰到这两个报错可以选择两种方式解决提交报错问题

方法一: 按照规范,为 commit 信息添加入参。例如 git commit -m 'fix: 修改bug'
方法二: 使用 git cz,按步骤操作

standard-version

1.安装
npm install standard-version

  1. package.json文件中配置
"scripts": {
    "release": "standard-version"
  }
  1. 提交代码后执行 npm run release

    release.png

    执行完后自动升级版本号、自动生成CHAGNELOG文件,里面是之前提交的对应版本号

  2. 生成的tags不会推送到远程,所以还要执行最后一步
    git push --tag

    tag.png

    生成新tag并推送到远程

最后去git上验证就可以啦~

你可能感兴趣的:(conventional commit(约定式提交))