cz-git 强大的 commitizen 的适配器——我的开发心路历程

cz-git.png

Github · 中文文档

cz-demo.gif

前言

本文不会讲述 cz-git 的使用方法,主要讲述我在开发这款适配器中的心路历程。

  • 随着多人开发团队推进着前端工程化的不断发展,团队规范与项目系统化配套工具链条也在不断诞生。
  • lerna 或到最近兴起的 pnpm 管理 monoreo workspace
  • eslint 配合 pretter 确保团队代码格式统一性。
  • commitizen 配合 commitlintlint-stagedhusky 之间的配合,把关最后提交代码质量与 commit 信息规范。
  • 再到利用 circleci, github actiongitee go 进行CI/CD(持续集成、持续交付和持续部署)。

概念

什么是 commitlint : git commit 时对于 commit message 进行规范检查的工具,保证团队的一致性。

什么是 commitizen : 基于Node.js的 git commit 命令行工具,辅助生成标准化规范化的 commit message。

什么是 adapter(适配器) : 更换 commitizen 命令行工具的交互方式插件。


cz-git 有什么特点

  • 友好型命令行工具,“懒字优先” !支持在命令行搜索和选择,减少拼写错误。
  • 高度自定义, 但输出格式遵循标准的 Angular commit 规范。
  • 更好维护 monorepo 工程化项目 与 commitlint 配合给予命令行的相关校验信息。
  • 更好的与issue链接,尤其 gitee | ✅ 支持在 commit 中添加 emoji

为什么不使用

cz-conventional-changelog

commitizen 官方的适配器(最初所使用)

  • 交互方式并不友好,重复性输入的东西太多
  • 添加配置需要写在 package.json 中,并且可支持的自定义配置太少

cz-customizable

可支持自定义的适配器(cz-git 起初参照对象)

  • 随着使用 monoreo ,我开始寻求更好的适配器来解决我需要重复输入 scopes 的问题,但不久后我发现这并不是我想要的
  • 随着我的 packages 不断增大,仅支持选择的交互方式体验会很难受,需要从上到下不断寻找。
  • 配置文件问题,我需要额外增加 .cz-config.js 在我的项目中,如此一来我配合 commitlint 需要配置两个地方,这为什么不能联动配合获取。
  • 支持的自定义配置还是太少,比如我想要 跳过选项 置于顶部,以配合团队 commit 整体习惯等,这些大大小小会很影响使用体验。

解决痛点以及心路历程

  1. 工程师追求的极致 ”懒“ :作为开发工程师的我们平时会利用我们的习惯结合我们的技术,去想办法处理好重复性的工作或者恶心难受的事情,这也是我所追求向往的。
  2. 什么是友好交互型命令行工具 :命令行工具的设计一定要具有引导性,要有很好的支持交互型的complate

    比如说我为我的 monorepo ui库中 table 添加了测试。我在 commit 的时候脑海里第一时间浮现是 test table。但如果像之前适配器要我去选择大量选项,就会很烦,失去了使用命令行工具的便利性,并且还有拼写出错的风险。
    我想要的是 只用输入 te 回车输出test, ta 回车输出 table,这样用起来才舒服。

  3. 如何支持好高度自定义以及配置 :这个工具的高度自定义肯定是结合团队习惯自定义设计。
    比如大多数情况我们的 commit scopes(范围) 是为空直接跳过,那么我们的第一项应该是 empty。如果是团队高度规范了规则的输出,那么我们的 empty 应该不显示或者置于底部。
  4. 最后也是我发现至关重要的一点 :使用 gitee 进行开发管理中,利用 commit message可以改变issue状态。Commit 关联Issue
    通过设置任务状态指令,即起issue状态变更的别名,通过选择别名和输入issue号,可以很好的关联并管理issue
    再配合命令行中所支持搜索与选择,就会达到很好的体验。

    比如像我就经常会等到开发完成后才到网页将 issue 待进行转为待完成再进行流程,没有很好的关联代码提交留痕。
    现在我只需要在创建分支的时候分支名携带issue number。结合我设置finish为 将任务转为待完成,这样我就能在 commit 的时候更改issue状态并留痕代码提交记录方便回溯。


基于以上的初心我开发了 cz-git,欢迎大家前来使用。如果觉得不错的可以给个小星星~

写在最后

你要问我这达到你的目的了吗 ? 其实我还没有

  1. 基于 Node.js 来启动的命令行,光是启动 Node.js 就慢了。但如果你如果你只接触了Node.js 的命令行工具应该没有感觉,但对于我来说经常接触命令行生态的人而言会很难受。这种感觉就像是使用了 144 Hz 的显示器屏幕回不到 60 Hz 的感觉。
  2. 依赖 Node.js 环境,无法做到零依赖的兼容性支持,简单来说就是格局小了。比方你要给其他部门的安利 cz-git,你需要告诉他,需要安装Node.js再...才能使用。
  3. Go,Rust 来制作 commitizen ? 答案是不会,体积和速度我还是无法接受

    引用 zlua 作者的一句话: (但也不是Lua,需要依赖Lua环境)

很多命令行工具 go/rust 写成,动不动就 2MB / 3MB,他们都还没有完成加载,lua 脚本可能都运行完了

原文链接:https://www.qbb.sh/posts/2022-12-26-cz-git-czg-journey-zh

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,478评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,825评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,482评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,726评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,633评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,018评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,168评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,320评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,264评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,288评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,995评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,587评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,909评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,284评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,862评论 2 339

推荐阅读更多精彩内容