DSH 的插件通常以本地目录或私有仓库形式存在。要在多台机器间同步或分享插件,开发者往往需要手动处理 GitHub 仓库的创建、manifest 校验、topic 设置以及更新策略。dsh-plugin-publish 解决了这套流程,它允许开发者通过一条命令将插件发布到 GitHub 公共仓库,使其他机器能够直接安装。
核心功能¶
- 本地校验:在发起任何网络请求之前,先在本地校验插件的 manifest 和 bundle。这能避免因 manifest 错误导致的静默失败,例如检查
dsh.bundle、patch 文件是否存在、以及浏览器半注册的id是否与包名一致。 - 仓库管理:自动创建 GitHub 仓库。如果仓库已存在,工具会复用该仓库,而非报错。
- 目录树提交:将本地整棵目录树作为一个提交上传到 GitHub。这意味着发布即镜像,本地删除的文件在远端也会被删除。
- Topic 保护:自动添加
dsh-plugintopic,同时保留用户已有的 topic,防止被覆盖。 - 安装指引:发布完成后,工具会打印出在其他机器上安装该插件的命令。
- 安全机制:
- Token 会从每一条消息里擦除,绝不泄露。
- 绝不发布凭据,会提前报出疑似凭据的文件。
- 绝不强制推送,除非显式给出
--force参数。
安装与启用¶
作为 DSH 插件安装后,可以在 DSH 会话中直接调用 /publish-plugin 命令。
dsh plugin --profile desktop add github:Gty2408/dsh-plugin-publish
启用后,在任意会话中即可使用:
/publish-plugin # 校验工作区里的插件
/publish-plugin --push # 校验后发布
/publish-plugin ./my-plugin --push --repo custom-name
典型用法¶
作为独立 CLI 使用(非 DSH 环境):
npx dsh-plugin-publish ./my-plugin --token <token> --yes
作为 DSH 插件使用(需要 Node.js 20+):
在 DSH 进程中直接调用发布命令:
/publish-plugin --push
适用场景与注意¶
此工具适合需要在多台机器间分发 DSH 插件的场景。
- 环境要求:需要 Node.js 20+。
- 认证方式:
- 设备码流程(默认):交互式授权,适合交互环境。
--token:非交互方式,适合脚本。Token 可从~/.dsh/.github-token(classic token,需 repo 权限)或插件的 token 配置读取。
- 已知限制:
- GitHub API 对单文件传输有 40MB 上限,工具会据此限制。
--force参数会覆盖分支。- 本工具仅发布到 GitHub,不投稿插件市场,也不发布到 npm。
- repo 权限无法删除仓库,需手动清理。
总结¶
dsh-plugin-publish 通过本地校验、目录树镜像同步和 topic 保护,简化了 DSH 插件的发布流程。它让插件的分享和分发变得标准化和自动化。