我看了 工作区开发 | Koishi 文档,插件只能从 koishi-app 目录下使用 yarn build [...name]
构建,自身是没有构建脚本的。
但是我想结合 Github Action,使用 google-github-actions/release-please-action@v3 和 npm-build-publish 组成 CI/CD,就不需要手动构建和手动更改版本号了。
但是我不知道如何独立构建插件,我尝试了 yarn add yakumo yakumo-esbuild yakumo-tsc -D
然后 yarn yakumo build
但是报错 unknown command: build
或者有其他的方法实现 CI/CD 吗?
1 个赞
方法还挺多的,普通人会用到的就至少有下面这两种:
方法一:使用 Yakumo
如果你的项目为 工作区 形式,那么使用 Yakumo 是最快捷的方法。
如果你的 repo 有这些特点,那么你的项目就是一个工作区:
- 顶层有
koishi.yml
和 yakumo.yml
- 顶层有
packages
文件夹
需要注意,如果你的顶层有 external
文件夹 但没有 packages
文件夹,那么的当前的项目是一个 机器人(整合包) 而不是一个插件。你的项目里已经有了完整的构建你的机器人的脚本,你无需进行任何操作。
在 CI 中,你只需要做这些事情:
- checkout(下载你的项目
- setup-node(安装 Node
- 运行
yarn && yarn build
- 对所有生成的插件运行
yarn pack
,例如直接运行 yarn workspaces foreach -Ap pack
- 你的所有插件已经打包完成,收集这些包即可
方法二
如果你的项目不是工作区,那么你只需要运行 tsc -b
即可构建插件。在此之前,确保插件 devDep 了 typescript 和 koishi。可以用 yarn add -D typescript koishi
快速确保。
- checkout(下载你的项目
- setup-node(安装 Node
- 运行
yarn && yarn tsc -b && yarn pack
- 你的插件已经打包完成,收集即可
除此之外,其他方法不推荐普通人使用,但遇到有需要的情况下可以使用:
方法三
3 个赞
你可以参考一些具有自动构建和发版能力的组织内项目,例如 wordle 和 booru。
不过据我所知目前确实没有单一插件自动更新版本号的仓库(只是没有,并不是无法实现)。
如果你对此有建议或者疑问,可以在开发群中联系名为 Shigma 的管理员(也就是我)。
3 个赞
同样有这个需求
我晚点康康然后发个 action 好了
- 主分支(GitHub 现在默认是
main
)有 push 时触发执行
- CI:自动编译(构建)dist
- CD:自动发布到 npm 仓库(需要在仓库的 secret 里填好自己的
NPM_TOKEN
)
达成效果:push 代码,半小时后,插件就已经自动更新到插件商店了
问题是我不知道该写个什么插件好
为了醋包饺子是吧
补充:楼主的设想是“只用 release 触发”,想法很好;这种做法很正确,很规范,但真没必要
代码是人写的,代码管理是人做的,你要考虑到管理的心智成本
release 发版,除非另写脚本搞自动化,手动发版也够麻烦的
大项目还差不多,没多少人用的小众项目(koishi 插件)实在没必要搞这么严谨
敏捷开发(快速迭代),发版由 push 触发就够了
你觉得不安全可以新建 dev 分支在上面开发,把 main 分支保护起来不允许直接 push(只能从 dev 分支 merge)
再补充:话说只发 ESM 可以吗,还是必须 CJS / ESM 都要
明白了
3 个赞
我还没看,不过昨晚我睡觉时想到可以每次要构建时都 yarn create koishi
然后 yarn setup [name]
然后 clone 仓库替换插件文件夹然后 yarn build [...name]
然后发布。
之后有空再研究下你提到的那两个仓库。
你不是叫 梦梦 吗?
Shigma 没有 梦梦 可爱
2 个赞
建议写 天王盖地虎
插件,Koishi 界的 Hello World,插件名直接叫 ”Hello Koishi“ 吧
2 个赞
已解决。
使用 yakumo build
需要满足三个条件:
-
src 文件夹要位于 /packages/core 之下
-
devDependencies 需要同时具有 yakumo yakumo-tsc yml-register
-
项目根目录需具有 yakumo.yml
,其内容为
pipeline:
build:
- tsc
参考项目: LinLin00000000/learnertracker (github.com)
2 个赞