打包并试装
开发时,你的插件一直放在自己的插件目录里。别人拿到的是一个安装包。这一页教你打一个包,然后像陌生人一样把它装上、用一遍、再卸掉。
很多问题只有这样才会暴露:包里少了文件,重启后数据丢了,卸载后游戏报错。
开始之前
- 插件已经通过测试。
- Covel 正在运行。
1. 补上版本和说明
别人需要知道三件事:这是哪个版本,它做什么,它需要哪个版本的 Covel。
脚手架已在 PLUGIN.md 写好 0.1.0。发布前检查版本号,每次发布时调高它:
version: 0.1.0
covel: ">=0.0.51"version是你这个插件的版本。它只写在PLUGIN.md里;插件带package.json时,那里不写版本。covel是它需要的 Covel 版本。脚手架已经替你填了创建时的版本。
然后改 README.md,至少写清楚:
- 它做什么,玩家会看到什么。
- 有哪些设置可以调。
- 怎样确认它在工作。
想让玩家知道是谁做的,可以在 PLUGIN.md 里加 author、license 和 homepage,写法见作者信息。
2. 打成 ZIP
在插件目录里把整个插件文件夹打包:
cd ~/.covel/plugins
zip -r ~/tavern-rumors.zip tavern-rumors -x "tavern-rumors/node_modules/*" "*/.*"打开 ZIP,第一层是文件夹 tavern-rumors,里面是 PLUGIN.md。PLUGIN.md 没有写 id 时,Covel 用这个文件夹名作为插件 ID。只打包文件夹里面的内容也可以,这时插件要么写 id,要么带一个写了 name 的 package.json,规则见安装插件。
IMPORTANT
安装时 Covel 不会替你安装依赖,也不会运行任何构建命令。包里的代码必须拿来就能运行。插件 SDK @covel/plugin-handlers-utils 和 zod 由 Covel 提供,直接 import,不用打包。
3. 先把开发用的那份挪走
你要测的是安装包,所以先把插件目录里原来那份移开,否则会因为“已经存在”而装不上:
mv ~/.covel/plugins/tavern-rumors ~/tavern-rumors-dev然后重启 Covel。
4. 装上,用一遍,再卸掉
打开 设置 → 安装与管理,导入刚才的 ZIP。照着下面的表一步步做,每一步都应该看到右边的结果:
| 做什么 | 应该看到 |
|---|---|
| 导入 ZIP,确认风险提示 | 安装成功,并提示需要重启 |
| 再导入一次同一个 ZIP | 被拒绝,提示它已经存在。原来装好的那份没有变 |
| 重启后端 | 插件出现在已安装列表里 |
| 开一局游戏,选中它,但先不授权 | 它不运行,游戏的其他部分照常 |
| 授权 | 它开始工作,面板里出现记录 |
| 再重启后端,回到这一局 | 之前的记录还在。它会再请求一次授权 |
| 卸载,然后重启后端 | 它从列表里消失,游戏照常 |
七步都对上了,这个包就可以发给别人。
NOTE
卸载只删除插件的文件。它在存档里存过的数据不会被删。
5. 把开发用的那份放回去
mv ~/tavern-rumors-dev ~/.covel/plugins/tavern-rumors没有按预期工作时
| 现象 | 原因和处理 |
|---|---|
导入时提示找不到 PLUGIN.md | ZIP 多套了一层文件夹。重新打包,确保 PLUGIN.md 在第一层 |
| 导入时提示已经存在 | 插件目录里有同名的文件夹。先挪走或卸载 |
| 导入时提示版本不符 | 你的 Covel 版本不在 covel 写的范围里 |
| 装上了但运行时报找不到某个模块 | 代码用到了没打进包里的依赖。把用到的代码一起放进包里 |
| 重启后记录没了 | 数据没有真正存上。回到测试插件,加一个检查数据的用例 |
世界包也一样
世界包的打包方法相同:进入世界文件夹,把里面的内容打成 ZIP,world.yaml 要在第一层。在同一个页面导入,装上就能用,不需要重启,也不需要授权。