跳转到主要内容
插件以插件包的形式分发:一个名为 <id>-<version>.oiplugin 的 zip 文件。用发布者密钥签名后,IDE 就能确认是谁发布的、发布后有没有被改动。

创建发布者密钥

keygen 把新的 Ed25519 密钥写入 acme.key(在 macOS 和 Linux 上文件权限只允许你本人读取),打印对应的公钥,并且不会覆盖已存在的文件。每个发布者只需执行一次,并妥善保管这个文件:拿到它的人就能以你的身份发布。 公钥连同发布者 id 一起写进插件市场索引。发布者 id 拥有对应的插件 id 前缀:发布者 acme 只能签名 acme.* 的插件。

打包

pack 会:
  1. 对文件夹运行 openidea-plugin check,失败则停止;
  2. 收集清单、清单及其贡献引用的所有文件,以及组件;
  3. 如果存在,加入 LICENSE、LICENSE.md、LICENSE.txt、NOTICE、NOTICE.md、COPYING 和 README.md;
  4. 传了 --key 和 --publisher(两者必须同时使用)时,先检查插件 id 以 <publisher>. 开头,然后签名;
  5. 写出 <id>-<version>.oiplugin,或 --out 指定的路径。
打包前先运行 openidea-plugin build,确保 dist/plugin.wasm 是最新的。

插件包的内容

签名是对插件 id、版本和插件包摘要的 Ed25519 签名。摘要是对清单和包内文件(路径和内容,排序后)计算的 BLAKE3 哈希。签名后改动任何文件都会使签名失效。 安装时 IDE 最多解包 10,000 个条目、512 MiB。

安装插件包

  • 设置 › 插件 › 齿轮菜单 › 从插件包文件安装… 可以安装 .oiplugin、根目录或唯一子文件夹中包含插件包的 .zip,或者某个文件夹中的 plugin.toml。对应位置没有 plugin.toml 的 zip(例如 IntelliJ 插件)会被拒绝。
  • 从磁盘安装插件… 安装解开的插件包文件夹。
  • 从插件市场安装时,会先下载插件包,并用索引条目和发布者密钥校验。
授权对话框会显示插件包是否已签名。未签名的包从磁盘安装时会给出警告;签名无效的包会被拒绝。见 审核规则与安全。

检查插件包

check 按安装时的方式解包并校验。

更换密钥

更换新密钥时,让旧密钥为新密钥背书,这样已安装的插件在更新时不需要用户确认签名者变更:
endorse 以 JSON 形式打印背书。见 自建市场 和 审核规则与安全。