<id>-<version>.oiplugin 的 zip 文件。用发布者密钥签名后,IDE 就能确认是谁发布的、发布后有没有被改动。
创建发布者密钥
keygen 把新的 Ed25519 密钥写入 acme.key(在 macOS 和 Linux 上文件权限只允许你本人读取),打印对应的公钥,并且不会覆盖已存在的文件。每个发布者只需执行一次,并妥善保管这个文件:拿到它的人就能以你的身份发布。
公钥连同发布者 id 一起写进插件市场索引。发布者 id 拥有对应的插件 id 前缀:发布者 acme 只能签名 acme.* 的插件。
打包
pack 会:
- 对文件夹运行
openidea-plugin check,失败则停止; - 收集清单、清单及其贡献引用的所有文件,以及组件;
- 如果存在,加入
LICENSE、LICENSE.md、LICENSE.txt、NOTICE、NOTICE.md、COPYING和README.md; - 传了
--key和--publisher(两者必须同时使用)时,先检查插件 id 以<publisher>.开头,然后签名; - 写出
<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 形式打印背书。见 自建市场 和 审核规则与安全。