在 DSH Web 開發流程中,停止或重啓服務器通常需要在終端操作,這會打斷當前的瀏覽器會話或丟失端口上下文。dsh-web-lifecycle 插件通過在側邊欄底部提供直接的交互按鈕,解決了這一問題。
插件簡介¶
這是一個 DSH Web 插件,由 DDA-DIGITAL 維護。它將“重啓”和“關機”兩個按鈕添加到側邊欄底部。該插件不依賴任何運行時庫,僅使用 Node.js 內置模塊。如果當前環境不支持(如缺少 webServer 或 appExit),插件將保持靜默,不影響宿主。
核心功能¶
- 重啓:保持相同的端口和會話(Cookie 權限不變),支持獨立運行或通過
dshweb包裝器運行。重啓會中斷當前所有活動任務。 - 關機:停止服務器並關閉標籤頁。如果瀏覽器限制(如普通標籤頁)導致無法自動關閉,會顯示全屏提示卡片。
安裝與啓用¶
通過以下命令安裝插件:
dsh plugin --profile web add github:DDA-DIGITAL/dsh-web-lifecycle
安裝後,重啓 dsh web 以加載宿主端,刷新頁面以加載客戶端。
典型用法¶
重啓¶
重啓有兩種運行模式,根據是否使用 dshweb 包裝器而定:
- dshweb 包裝器:插件退出碼爲 75,包裝器檢測到該代碼後,會在約 1 秒內重新啓動服務器並重新加載頁面。
- 獨立模式:插件生成一個協調器進程,監聽端口釋放並等待新服務器健康檢查,日誌記錄在
$DSH_HOME/plugins-data/dsh-web-lifecycle/restart.log。
關機¶
插件退出碼爲 0,確保包裝器停止重啓循環。頁面會嘗試調用 window.close() 關閉標籤頁。由於瀏覽器安全限制,window.close() 僅對由腳本打開的窗口有效。在普通瀏覽器標籤頁中,此方法會失效,頁面會顯示全屏提示卡片。
配置說明¶
默認配置位於插件的 cordis.patch.yml 行中,可通過 $DSH_HOME/profiles/web/cordis.patch.yml 覆蓋。關鍵配置項包括:
confirm:是否在執行操作前顯示確認彈窗(默認爲 true)。allowShutdown:是否顯示關機按鈕(默認爲 true)。healthTimeoutMs:獨立模式下等待新服務器健康檢查的超時時間(默認爲 30000 毫秒)。logToConsole:是否將插件的決策日誌輸出到 dsh web 的日誌中(默認爲 true)。
注意事項¶
- 瀏覽器限制:
window.close()在普通瀏覽器標籤頁中無效,需手動按快捷鍵關閉。 - 守護進程:關機僅停止進程,系統級守護進程(如 launchd/systemd/pm2)可能會將其重啓,插件本身不支持處理這種情況。
- 會話中斷:無論是重啓還是關機,都會中斷當前所有的活躍任務、子代理和後臺作業。
- 啓用驗證:如果按鈕未顯示,請運行
dsh --profile web --dump-config確認web-lifecycle是否已列出,並確保已重啓dsh web。
該插件通過 Exit Code 協議(75=重啓,0=關機)與 DSH 環境交互,簡化了 Web 端的服務器管理。更多詳情請訪問 GitHub。