axetroy / blog

:open_book:基于Github API 的动态博客
https://axetroy.xyz
216 stars 36 forks source link

又一个vscode扩展,生成CHANGELOG #186

Open axetroy opened 5 years ago

axetroy commented 5 years ago

大多数时候, 写的一个小小的库,还得要专门写变更日志。

而遵循一定的 commit 格式,是可以生成标准的变更日志的。

这时候就需要像conventional-changelog

这我就不得不在我的项目中添加脚本

npx conventional-changelog-cli -p angular -i CHANGELOG.md -s -r 0

今天呢,就把它提取出来,独立成为一个 vscode 扩展

让你方便的生成 CHANGELOG

支持哪些特性

Screenshot

TODO

说说踩的坑

conventional-changelog的包分有

按理来说,代码更次的,应该引用conventional-changelog-coreconventional-changelog

然而,这两个包都有问题: 不能指定当前工作目录去解析 (其实它引用的git-raw-commits是有参数设置的conventional-changelog并没有用这个参数)

我又不想 Fork 一个自己改, 那就只能用 conventional-changelog-cli, 以命令行的方式去运行。

那么问题来了:

  1. vscode 的扩展安装不是通过npm install

vscode 直接把本地的node_modules依赖打包,并且忽略了一些目录和文件,包括.bin目录

所以扩展是找不到conventional-changelog-cli的可执行文件

  1. 平台不同,可执行文件也不同

Linux 和 OSX 下 是一个 link,自己执行 chmod +x 即可,而 windows 下是 exe 文件。

所以自制可执行文件不靠谱

解决办法:

  1. 我不要可执行文件了,直接用 node 执行 js 文件可不可以
node ./node_modules/conventional-changelog-cli/cli.js

可以是可以,不过这样的扩展就有局限行,需要用户安装nodejs,显然不是每个用户都安装

  1. 使用 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给我!

Fucntion commented 3 years ago

image