本篇文章为《前端组件库的开发与维护》系列的第六篇文章。本文案例在线文档:calendar.hxkj.vip。GitHub 仓库:github.com/TangSY/vue3…。
作为一个经常使用开源组件库/框架的你来说,一定会发现这样一个情况,不管它的用户量有多少,都会配有对应的 changelog
,例如:Element-ui、Antd 等。
为什么需要 changelog
为什么他们都会提供 changelog
呢?我认为清晰的 changelog
,至少包含以下几个好处:
- 方便查看每个版本新增了哪些功能;
- 方便查看每个版本修复了什么 bug;
- 确定哪个版本有
break change
。这个很重要,可以帮助用户提前预防由于盲目升级带来的 bug;
好处是知道了,我也想写了,那真的是每次版本迭代都手动维护这个文档吗?
还记得 上一篇文章 中提到规范化的 commit 信息可以用于生成 changelog 吗?没错,接下来咱们就是需要配合它来实现自动生成 changelog
。
生成 changelog
这里介绍两种方式,具体使用哪种凭个人喜好。
1、conventional-changelog-cli
conventional-changelog-cli 默认推荐的 commit 标准也是来自 AngularJS规范,所以咱们不用做任何配置,直接拿来就用即可。
首先全局安装:
npm install -g conventional-changelog-cli
然后使用如下命令进行 changelog
的生成:
conventional-changelog -p angular -i CHANGELOG.md -s
以上命令中:参数
-p
用来指定angular
规范作为 commit 信息的标准;-i
表示从CHANGELOG.md
文件中读取 changelog;-s
表示读写 changelog 为同一个文件。
执行完成之后,会在项目根目录中新建一个 CHANGELOG.md
文件,文件内容如下:
这里需要注意两点:
- 第一点:上面那条命令产生的
changelog
是基于上次 tag 版本之后的变更所产生的,所以如果想生成之前所有版本 commit 信息产生的changelog
则需要使用这条命令:
conventional-changelog -p angular -i CHANGELOG.md -s -r 0
其中 -r 表示生成 changelog 所需要使用的 tag 版本数量,默认为1,全部则是0。
- 第二点:由上面第一点可知,每次生成
changelog
都是基于tag
版本的,所以每次版本迭代都必须打上tag
。否则的话,生成changelog
永远只有一个版本。
那怎么样才能更方便的打 tag
和维护版本呢?其实 npm 自带的 version 命令就可以很轻松的同时搞定 tag
和版本管理了。
我们都知道每个 npm 包中都有一个 package.json
文件,如果要发包的话,package.json
中的 version
就是版本号了。
version
字段结构为:'0.0.0-0'
。
分别代表:大号.中号.小号-预发布号
,对应 major.minor.patch-prerelease
。
咱们执行 npm version
加上对应的版本标签 可以自动更改 package.json
中对应的版本号。
例如:package.json
包中的 version 是1.0.0
,然后执行如下命令:
npm version prerelease
执行完之后,package.json
的版本号则会变成 1.0.1-0
。同时,会自动打上一个名为 v1.0.1-0
的 tag。
咱们执行 git tag -l
就可以看到这个 tag。
如果此时执行生成 changelog
的命令,就可以看到后续的提交信息都被生成出来了。
同样的,如果执行 npm version patch
,意味着把 prerelease
版本标签去除,变为正式版。版本号就会变成 1.0.1
。
2、Vant-cli
如果你是从第一篇一直看到这篇,就会知道咱们的组件库是基于 Vant-cli
搭建的,而 Vant-cli
刚好又提供了生成 changelog
的命令,那咱们就来试试看效果如何吧。
首先,在 package.json
文中添加如下 scripts
:
"changelog": "vant-cli changelog",
接着咱们执行一下 yarn changelog
,可以看到控制台的提示,在根目录中生成了一个changelog.generated.md
文件,并且该文件没有加入 git 版本控制中。咱们打开看看,里面包含了最近一个版本的 changelog
。
咱们要做的就是把这个 changelog 内容复制到真正的 CHANGELOG.md
文件中即可。
总结
今天这篇文章主要讲解了如何通过 commit
信息自动生成 changelog
,分别有以下两种方法:
- conventional-changelog-cli 结合 npm version:这种方法适合任何项目,只是配置步骤较多而已。
- Vant-cli 提供的 changelog 命令:这种方法适合基于
Vant-cli
搭建的项目。
下一篇咱们来看看如何快速搭建一个高逼格且细致的文档网站。
对此系列感兴趣的,不妨一键三连(点赞 + 关注 + 收藏),方便跟进后续文章。
欢迎大家在评论区留下宝贵的建议!
本系列往期文章
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情”