约定式提交规范三部曲(二)之 commitizen

Commitizen 是一个快速提交规范化提交信息的命令行工具,使得提交信息更加清晰、易于理解,并且符合规范。通过 Commitizen,开发者能够以一种结构化的方式填写提交信息,这使得阅读提交历史和跟踪变更更加方便。

Commitizen 本身并不是一个提交信息规范,而是一个工具,它与约定式提交规范(如 Conventional Commits 规范)结合使用。当开发者使用 Commitizen 进行提交时,它会引导开发者按照指定的格式填写提交信息,包括提交类型(如 feat, fix, docs, style, refactor, test, chore 等)、作用范围、简要描述等信息。

安装

bash 复制代码
# 全局安装
npm install -g commitizen

# 项目安装
npm install --save-dev commitizen

如果工作在非友好型仓库/项目,可以通过安装 streamich/git-cz 使用 git cz 命令进行提交,其工作方式与 git commit 相同。

友好型仓库/项目

在 Commitizen 中,友好型仓库/项目(Commitizen-friendly)指的是一个项目或仓库已经配置了 Commitizen,并且遵循了 Commitizen 提供的提交规范。

当一个项目被称为友好型仓库/项目时,意味着该项目的开发者可以使用 Commitizen 提供的交互式界面来生成符合规范的 Git 提交信息。这样做的好处是,所有的提交都将按照统一的格式进行,并且包含必要的信息,如类型、作用域、描述等。这样的提交信息更易于阅读和理解,有助于团队成员之间的沟通和协作。

Commitizen 中的适配器

在 Commitizen 中,适配器是指用于与具体提交规范相匹配的插件或配置。Commitizen 本身提供了一种通用的提交信息格式规范,但不同的项目或团队可能有不同的提交规范要求,这时就需要使用适配器来定制化 Commitizen 的行为。

最常用的适配器之一是 cz-conventional-changelog,它与 Angular 团队的提交信息规范 兼容,并且被广泛应用于许多开源项目和企业内部的代码仓库中。

同时,作者基于 cz-conventional-changelog 制作的简体中文版适配器 cz-conventional-chanagelog-zh-cn 已经发布至 npmjs

配置友好型仓库/项目

配置英文适配器:

bash 复制代码
# npm
npx commitizen init cz-conventional-changelog --save-dev --save-exact
# yarn
npx commitizen init cz-conventional-changelog --yarn --dev --exact
# pnpm
npx commitizen init cz-conventional-changelog --pnpm --save-dev --save-exact

简体中文版仅需将 cz-conventional-changelog 替换为 cz-conventional-changelog-zh-cn:

bash 复制代码
# npm
npx commitizen init cz-conventional-changelog-zh-cn --save-dev --save-exact
# yarn
npx commitizen init cz-conventional-changelog-zh-cn --yarn --dev --exact
# pnpm
npx commitizen init cz-conventional-changelog-zh-cn --pnpm --save-dev --save-exact

**注意:**如果正在使用类似 huskyprecommit 钩子,需要将脚本命名为 "commit"(例如"cm": "cz")以外的名称。

原因在于 npm 脚本具有一个特性,即它会自动运行名称为 prexxx 的脚本,其中 xxx 是另一个脚本的名称。实质上,如果你将脚本命名为 "commit",npm 和 husky 将会运行 precommit 脚本两次,解决方法是防止 npm 触发的 precommit 脚本。

运行

使用 npx 方式运行:

bash 复制代码
npx cz

使用 package.json 脚本的方式运行:

bash 复制代码
npm pkg set scripts.commit="cz"

或将下面内容加入 package.json

json 复制代码
"scripts": {
  "commit": "cz"
}

然后执行 npm run commit

多仓库/项目模板化

作为多个仓库/项目的维护者,可能希望为所有这些项目统一采用相同的提交信息格式或者适配器。可以创建自己的 Node 模块,从而实现这一目标。参考 Commitizen for multi-repo projects 指南。

同时作者在 npmjs 发布了通用的 cz-conventional-template-zh-cn 模块,该模块可应用于多仓库/项目(multi-repo)的简体中文模板 ,目前作者的所有项目全部都基于此模板进行规范化提交。

  • 内部集成 cz-conventional-changelog-zh-cn 适配器,完全兼容 Angular 团队的提交信息规范标准。
  • 集成 commitizen,无需另行下载额外配置。
  • 通用简体中文模板,统一标准服务多(单)仓库/项目。

安装与运行

bash 复制代码
# 创建项目目录
mkdir my-project

# 初始化 git
git init

# 初始化 nodejs 项目
npm init

# 以开发依赖方式安装 cz-conventional-template-zh-cn
npm install --save-dev cz-conventional-template-zh-cn

# 添加运行脚本
npm pkg set scripts.commit="cz-zh-cn"

# ... 执行 git add 添加待提交文件后

# 运行命令提交 git
npm run commit

更多

相关推荐
~甲壳虫2 小时前
说说webpack中常见的Plugin?解决了什么问题?
前端·webpack·node.js
~甲壳虫2 小时前
说说webpack中常见的Loader?解决了什么问题?
前端·webpack·node.js
~甲壳虫2 小时前
说说webpack proxy工作原理?为什么能解决跨域
前端·webpack·node.js
熊的猫3 小时前
JS 中的类型 & 类型判断 & 类型转换
前端·javascript·vue.js·chrome·react.js·前端框架·node.js
前端青山13 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
GDAL15 小时前
npm入门教程1:npm简介
前端·npm·node.js
郑小憨1 天前
Node.js简介以及安装部署 (基础介绍 一)
java·javascript·node.js
lin-lins1 天前
模块化开发 & webpack
前端·webpack·node.js
GDAL2 天前
npm入门教程13:npm workspace功能
前端·npm·node.js
wumu_Love2 天前
npm 和 node 总结
前端·npm·node.js