管理員可以從外掛註冊表安裝沙箱化外掛,也可以在 astro.config.mjs 中註冊 npm 套件。以設定為基礎的外掛既可以在沙箱中執行,也可以在站台程序中執行。
為管理後台安裝做準備
註冊表安裝需要:
- 一個具有
plugins:manage權限的管理員帳戶。 - 為下載的外掛套件設定的儲存空間。
- 一個可用的沙箱執行器。
在 Cloudflare Workers 上,請使用 @emdash-cms/cloudflare 中的 sandbox():
import { sandbox } from "@emdash-cms/cloudflare";
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
export default defineConfig({
integrations: [
emdash({
sandboxRunner: sandbox(),
}),
],
});
Cloudflare 執行器使用 Worker Loader 為每個外掛建立一個獨立的 Worker。它需要 Workers Paid 方案,以及一個名為 LOADER 的 worker_loaders 繫結。沙箱化外掛透過 PluginBridge 存取內容、媒體、儲存空間、網路和電子郵件 API,因此站台的 Worker 進入點必須匯出該類別。
*-cloudflare 範本會匯出 PluginBridge,但把 Worker Loader 繫結保持為註解狀態,這樣新專案可以部署在 Workers 免費方案上。你可以在建立專案骨架期間啟用沙箱化外掛,也可以依照 Cloudflare 沙箱設定稍後再加入該繫結。sandbox() 輔助函式會在建置時讀取實際生效的 Wrangler 設定。沒有 LOADER 時,仍然可以瀏覽註冊表,但由設定管理的沙箱化外掛不會載入,安裝或更新請求會傳回 SANDBOX_NOT_AVAILABLE。
在 Node.js 上,請安裝執行器及其 workerd 對等相依套件:
npm install @emdash-cms/sandbox-workerd workerd
workerd 程序會把外掛程式碼與 Node.js 伺服器分開執行。請在 EmDash 整合中選擇該執行器:
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
export default defineConfig({
integrations: [
emdash({
sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox",
}),
],
});
兩個平台上的開發設定、執行階段需求、資源限制以及執行器無法使用時的錯誤,請參閱設定外掛沙箱。
從註冊表安裝
- 在管理後台中開啟 Registry。
- 搜尋某個外掛並開啟它的詳細資料頁面。
- 選擇一個發佈版本,並審閱它的發佈者、中繼資料、所要求的權限和驗證狀態。
- 選擇 Install。
- 在同意對話方塊中審閱已驗證的發佈版本識別碼和權限,然後確認。
EmDash 會驗證發佈者目前已簽署的記錄,並在透過沙箱執行器載入下載的外掛套件之前對其進行檢查。該外掛會出現在 Plugins 下,你可以在那裡停用或設定它。完整的驗證和信任模型請參閱外掛註冊表。
審閱權限
同意對話方塊會顯示該外掛宣告的每一項權限。常見的權限包括:
| 權限 | 授予的存取權限 |
|---|---|
content:read | 讀取站台內容 |
content:write | 建立、更新和刪除內容 |
content:revisions:read | 讀取保留的內容修訂歷程 |
schema:read | 讀取集合和欄位定義 |
bylines:read | 讀取公開的署名檔案和內容署名 |
redirects:read | 讀取重新導向規則 |
redirects:write | 變更訪客被導向的位置 |
media:read | 讀取已就緒媒體的安全中繼資料 |
media:bytes:read | 讀取已就緒媒體的檔案內容和內容雜湊 |
media:metadata:write | 變更媒體的替代文字、說明文字和焦點 |
media:write | 上傳、取代和刪除媒體 |
network:request | 向外掛允許的主機清單傳送請求 |
當外掛宣告了作為模型上下文協定(MCP)工具公開的外掛路由時,對話方塊也會標明這些路由。完整的權限模型請參閱能力與安全。
更新外掛
- 在管理後台中開啟 Plugins。
- 選擇 Check for updates。
- 在有可用發佈版本的註冊表外掛上選擇 Update。
- 審閱同意對話方塊,然後確認更新。
當註冊表更新新增權限或 MCP 工具,或者把某個路由從需要驗證改為公開時,需要再次確認。在你核准這項變更之前,EmDash 會保留已安裝的版本。
明確的更新只會向前推進。跟隨註冊表最新發佈版本的更新,在發佈者撤回最新版本時可能會回滾。其他任何時候若要回到較舊的版本,請解除安裝該外掛,然後從它的註冊表頁面安裝那個版本。除非你選擇刪除,否則解除安裝會保留外掛儲存的資料。
解除安裝外掛
- 在管理後台中開啟 Plugins,並展開已安裝的外掛。
- 選擇 Uninstall。
- 只有在之後重新安裝時不需要該外掛所儲存的資料時,才選擇 Also delete plugin storage data。
- 確認解除安裝。
EmDash 會移除已安裝的外掛套件,並停止載入該外掛。預設情況下,外掛儲存的資料會保留。
從 npm 安裝
原生外掛和由設定管理的沙箱化外掛都作為 npm 相依套件安裝。請依照該套件的說明選擇 plugins: [] 或 sandboxed: []。
下面的範例註冊了原生的 Field Kit 外掛:
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
import { fieldKitPlugin } from "@emdash-cms/plugin-field-kit";
export default defineConfig({
integrations: [
emdash({
plugins: [fieldKitPlugin()],
}),
],
});
由設定管理的外掛會在你更新 npm 相依套件並部署站台時發生變化。它們不能從管理後台安裝或移除。
選擇安裝方式
| 註冊表 | 使用 sandboxed: [] 的 npm | 使用 plugins: [] 的 npm | |
|---|---|---|---|
| 安裝和更新 | 管理後台 | 變更相依套件並部署 | 變更相依套件並部署 |
| 執行位置 | 已設定的沙箱執行器 | 已設定的沙箱執行器 | 站台程序 |
| 對 EmDash 的存取 | 僅限已宣告的外掛 API | 僅限已宣告的外掛 API | 已宣告的外掛 API,加上直接的程序存取 |
Node.js API 和直接的 fetch() | 無法使用 | 無法使用 | 可使用 |
| React 管理後台元件 | 無法使用 | 無法使用 | 可使用 |
| Portable Text 算繪器 | 無法使用 | 無法使用 | 可使用 |
當外掛需要 React 管理後台元件、Portable Text 算繪器、頁面片段,或需要直接存取站台程序時,請使用原生外掛。當外掛可以透過已宣告的外掛 API正常運作時,請使用沙箱化外掛。