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 插件的發佈流程。它讓插件的分享和分發變得標準化和自動化。