插件通过 npm 包分享。发布到 npm 之后,任何人都可以按名字添加;插件市场会把已发布的插件列在软件的 发现 标签里。

用你的 scope 命名

npm 包名是 @publisher/name,scope 必须和插件的 publisher 一致。比如插件 yourname/level-ideas,就发布为 @yourname/level-ideas,也可以叫 @yourname/ohmygame-plugin-level-ideas。scope 对不上的包会被拒绝。ohmygame 和 personal 这两个 publisher 是保留的。

在 package.json 里:

  • files 列出要发布的内容:.ohmygame-plugin、assets、locales,以及你用到的功能所在的文件夹。
  • keywords 包含 ohmygame-plugin。
  • publishConfig.access 设为 public。

发布一个版本

  1. 在 package.json 和 .ohmygame-plugin/plugin.json 里同时提高 version。每次发布都需要新的版本号。
  2. 检查 npm 将要发布的内容:在 OhMyGame 仓库的本地副本里运行 bun run plugin:check path/to/your-plugin。
  3. 发布到 npm。

从插件生成器导出的插件自带一个 GitHub Actions 工作流,会带着来源证明(provenance)发布 GitHub Release。使用前,先在 package.json 里加上 repository,再到 npmjs.com 把你的仓库设为这个包的可信发布者。发布前记得加上许可证。

插件市场

插件市场收录发布在 npm 上的插件。一个定时任务会找到它们,用和软件相同的规则检查,然后发布一份索引供软件读取。

  • 来源已验证 表示 npm 的来源证明指向了插件的仓库,或者仓库里的 package.json 写明了这个包。带来源证明发布是最简单的方式。
  • 从插件市场安装会打开和 添加插件… 一样的确认页,并校验 npm 对包名、版本和校验值的签名。
  • 发布新版本后,从 npm 添加过你插件的人会看到 可更新。

发布前

  • 翻译 locales/zh-CN.json。没翻译之前,它会沿用 locales/en.json 的内容。
  • 只申请需要的权限。插件申请的每一项权限,都会在别人允许之前展示给他们。
  • 如果插件带原生代码,请在 longDescription 里说明它做什么。别人确认原生代码时,知道它没有沙盒。