# 发到插件中心 (/docs/plugins/publish)

作者只推 tag。发布用的插件 zip 由 Dex Buddy 从源码打出来。作者不打这份额外的 zip，也不上传对象存储，也不在插件仓库里添加调用 Dex Buddy 的工作流。

同事从 Dex Buddy 的插件市场安装。不要把下载地址发给他们。清单里的 `category` 会写进版本说明，插件市场按它分段。

## 每个插件都要做 [#每个插件都要做]

1. 用自己的仓库开发。不要把源码复制进 Dex Buddy。打开已经装好的 Dex Buddy，用插件页「加载本地目录」。
2. 发一版时，把 `plugin.manifest.json` 的 `version` 改成新的 `X.Y.Z`（三位数字，不要前导 0）。
3. 提交并推送，然后打 tag 并推送：

```bash
git tag vX.Y.Z
git push origin vX.Y.Z
```

`v` 后面的数字必须和清单里的 `version` 相同。

4. 仓库第一次上架，联系 Dex Buddy。之后每次只推 tag，不用再通知。

只有页面和 `index.js`、不需要额外解释器的插件，做到这里就结束。

需要 Python 或自己的 Node 依赖时，在 `plugin.manifest.json` 写 `runtime`。Python 提交 `requirements.txt`。有 uv 工程时再在仓库根提交 `uv.lock`，没有锁也能发布。Node 必须提交和 `package.json` 同目录的 `package-lock.json`。装依赖的规则见 [运行](/docs/plugins/runtime)。不要再放 `dex-buddy-plugin-pack.json`。发布时如果仓库根上还有这份文件，这次发布会失败。

插件中心的 zip 从这次 tag 里取文件。要收窄内容，用 [打包](/docs/plugins/pack) 里的 `dex-buddy-plugin.pack` 和 `dex-buddy-plugin.ignore`。两份都没有时，不该装给同事的文件不要提交进 tag。同事安装之后，Dex Buddy 在那台机器上准备环境。

密钥继续放在 Dex Buddy 的设置页，不要写进仓库，不要打进包。

## 现在先不要做 [#现在先不要做]

- 不要在插件仓库添加 `.github/workflows` 去调用 Dex Buddy。
- 不要把对象存储密钥放进插件仓库。
- 不要把编好的二进制提交进 git。
