• 作者:老汪软件技巧
  • 发表时间:2024-09-17 15:03
  • 浏览量:

前言

在团队协作开发软件项目时,遵循 统一的 commit 规范(一般为Angular JS规范) 对于保持代码仓库的整洁和提高团队成员之间的沟通效率至关重要。

然而,对于很多刚接触版本控制的新手来说,如何写出符合 规范的commit message 并不是一件容易的事,要求全部项目开发者使用 同一套 commit 规范 也不容易。

今天,我们就来介绍三个工具:commitizen、commitlint 以及 husky,它们可以帮助你和你的团队快速掌握 commit规范,提升团队协作效率。

这三款工具只要在 node 环境下就可以安装,因此不管是前端还是后端,都可以哦!

commitizen:帮你编写符合规范的 commit message

commitizen 是一个帮助开发者 按照特定的格式(Angular规范) 编写 commit message 的工具。它通过提供一个 命令行界面(CLI) 来引导用户逐步填写 commit message 信息,从而确保每次提交都遵循相同的格式。这种格式化的方式有助于团队成员更容易理解和跟踪项目的变更历史。

值得一提的是,这个依赖是需要全局安装的,这意味着你可以在任何项目中使用它辅助编写commit message,但也同时意味着你不能强制其他开发者在你的项目中使用这一工具。

不过你可以让你的项目成为 commitizen 友好项目 —— 可以设计自己的commit message提交约定,并引导其它开发者按照项目约定提交commit。

如何安装commitizen?1. 全局安装 commitizen

首先,先在您的设备中全局安装 commitizen ,并试图在你的项目文档中邀请其它开发者全局安装它。

npm install -g commitizen

完成这一步,其实您已经完成它的安装操作了,可以直接在各种项目使用它编写Angular JS规范的 commit message。(使用方式会在下面介绍)

但接下来的额外操作可以让你的项目成为 commitizen 友好项目,这样当其它开发者在你的项目中使用这一工具时,可以按照你项目设定的规则弹出引导提示,快速编写符合你项目要求的commit message。

2. 将项目变为 commitizen 友好项目

接下来,你只需要一个指令就可以让你的项目变为 commitizen 友好项目,在项目根目录执行它:

commitizen init cz-conventional-changelog --save-dev --save-exact

不过不要着急,这条指令有可以客制化的地方,容我介绍一下!首先我们理解一下这个指令干了啥:

安装了名为 cz-conventional-changelog 的 npm 模块 —— 它是官方推荐的一个开箱即用的预制commit规定(即当前主流的Angular JS规范),官方把这种模块称作适配器(adapter);

将这个npm模块添加到 package.json 的 devDependencies 中;

将配置项设置到 package.json 文件中,这是为了告诉其他使用 commitizen 的开发者尝试使用它commit时,我们实际上希望他们使用哪个适配器。具体执行的配置如下:

// package.json
{
    //... ,
    ```
    "config": {
        "commitizen": {
          "path": "./node_modules/cz-conventional-changelog"
        }
    }
}

如果你是新手,选它就够啦!当然你也可以选择用它的简体中文版本(cz-conventional-changelog-zh-cn),把指令替换一下就好。另外官方也推荐了几款其他的适配器:

如果你要设计自己的适配器,只需要fork这些出色的适配器项目,修改特定的配置项即可。官方在文档中给予了以下引导:

To create an adapter, just fork one of these great adapters and modify it to suit your needs. We pass you an instance ofInquirer.jsbut you can capture input using whatever means necessary. Just call thecommitcallback with a string and we'll be happy. Publish it to npm, and you'll be all set!

3. 向其它开发者炫耀你的项目支持了commitizen

现在,你可以召集更多开发者与你一同使用这个工具,保持 commit 记录的工整性!

在项目的 README 文档中添加这个徽章吧:

[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)

如何使用commitizen?

使用它非常简单,只需要将git commit指令替换成git cz即可。接下来,commitizen会引导你完成一个绝佳的commit message。

commitlint:确保commit消息符合规范

虽然 commitizen 可以帮助你在编写commit message时遵循一定的格式,但并不是所有人都会使用这个工具。光靠它来维持项目commit的工整性是不可靠的。

这时候,commitlint 就派上了用场。它是一个用来验证 commit message 是否符合特定格式要求的工具。它可以集成到你的开发流程中,在commit message不符合规定时阻止提交。

如何安装commitlint?1. 安装 commitlint 依赖

npm install --save-dev @commitlint/cli @commitlint/config-conventional

2. 添加配置文件

在项目根目录文件夹下创建一个commitlint.config.js文件来定义你的commit规范。具体规则配置可以参考文档中的介绍。下面是一个定义示例:

// commitlint.config.js
module.exports = { 
  extends: ['@commitlint/config-conventional'], 
  rules: { 
    'type-enum': [ 
      2, 
      'always', 
      ['feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'chore', 'revert'] 
    ] 
  } 
};

一般而言,如果你想让commit message遵循基本的 Angular JS规范,只需要继承@commitlint/config-conventional配置即可,无需添加别的配置项,即:

// commitlint.config.js
module.exports = { 
  extends: ['@commitlint/config-conventional'],
};