介绍
Smarty-Release是一个npm包发布时的辅助工具。提供了npm包发布时的必要的编排流程,它可以避免手动操作时容易出错的问题。
起源
Smarty-Release的最初模型实际上来自开源 vitepress 项目的 scripts/release.js 脚本,最开始我也在我的很多npm包中使用了这个脚本来辅助发版,但是随着npm包越来越多这种方式就会暴露以下问题:
- 每次都要复制一遍脚本到新项目,繁琐😖!!。
- package.json中需要安装较多依赖项😅
- 假如优化了流程上的某个步骤,需要在所有项目中都去改一遍😭!!
- 变更日志生成功能不够强大和个性化
其它解决方案
是否在闭门造车?在做一个开源项目之前可以先问问AI是否有成熟的解决方案。给出的解决方案有:
看了一下它们的Star,好家伙,都还不低。上手尝试了一下总结了它们的问题:
- 不轻量,依赖太重(dependencies)
- 功能比较全面,配置项太多,实际上很多都用不上
整体设计
基于以上问题,于是Smarty-Release就这样诞生了,基本上只是对 vitepress/scripts/release.js逻辑的提取,并做了以下改动:
- 把部分依赖项换成了更轻量且维护活跃的包
- 变更日志生成功能替换成了基于rust的git-cliff
- 借鉴release-it的钩子设计思想
- 借鉴了np的部分思想(比如:release失败恢复到原始状态)
因此Smarty-Release是一个非常简单且轻量的工具。