大多数时候, 写的一个小小的库,还得要专门写变更日志。
而遵循一定的 commit 格式,是可以生成标准的变更日志的。
这时候就需要像conventional-changelog
这我就不得不在我的项目中添加脚本
npx conventional-changelog-cli -p angular -i CHANGELOG.md -s -r 0
今天呢,就把它提取出来,独立成为一个 vscode 扩展
让你方便的生成 CHANGELOG
支持哪些特性
- 从头开始生成更改日志。
- 从最近 1 个版本生成更改日志。
- 从最近 2 个版本生成更改日志。
- 从最近的 N 版本生成更改日志。
- 自动生成
CHANGELOG.md
。 - 将此版本更改附加到
CHANGELOG.md
。
TODO
- 完整迁移
conventional-changelog-cli
的参数设置 - 适配多个项目集合,类似
lerna
- 在文件管理器添加
生成更新日志
菜单
说说踩的坑
conventional-changelog
的包分有
- conventional-changelog-cli
- conventional-changelog
- conventional-changelog-core
按理来说,代码更次的,应该引用conventional-changelog-core
或conventional-changelog
然而,这两个包都有问题: 不能指定当前工作目录去解析 (其实它引用的git-raw-commits
是有参数设置的conventional-changelog
并没有用这个参数)
我又不想 Fork 一个自己改, 那就只能用 conventional-changelog-cli
, 以命令行的方式去运行。
那么问题来了:
- vscode 的扩展安装不是通过
npm install
的
vscode 直接把本地的node_modules
依赖打包,并且忽略了一些目录和文件,包括.bin
目录
所以扩展是找不到conventional-changelog-cli
的可执行文件
- 平台不同,可执行文件也不同
Linux 和 OSX 下 是一个 link,自己执行 chmod +x
即可,而 windows 下是 exe 文件。
所以自制可执行文件不靠谱
解决办法:
- 我不要可执行文件了,直接用 node 执行 js 文件可不可以
node ./node_modules/conventional-changelog-cli/cli.js
可以是可以,不过这样的扩展就有局限行,需要用户安装nodejs
,显然不是每个用户都安装
- 使用 Electron 内置的 NodeJS 执行
Electron 内置有的 NodeJS,我们就用它来执行这个 js 文件
process.execPath
则是当前运行环境的可执行文件路径
execa(process.execPath, './node_modules/conventional-changelog-cli/cli.js');
最后完美解决
最后上项目: https://github.com/axetroy/vscode-changelog-generator
有什么意见或者功能需求,欢迎发issue给我!