EmDash 外掛可以透過兩種方式安裝:透過管理儀表板從市場安裝,或直接在 Astro 設定中新增。市場外掛始終在沙箱中執行;基於設定的外掛根據宣告的陣列(sandboxed: [] vs plugins: [])在沙箱或程序內執行。
從市場安裝
管理儀表板包含一個市場瀏覽器,您可以在其中搜尋、安裝和管理外掛。
前提條件
要安裝市場外掛,您的站點需要:
-
設定沙箱執行器 — 市場外掛在隔離的執行環境中執行,需要沙箱執行器。以下設定啟用它:
import { defineConfig } from "astro/config"; import emdash from "emdash/astro"; export default defineConfig({ integrations: [ emdash({ marketplace: "https://marketplace.emdashcms.com", sandboxRunner: "@emdash-cms/sandbox-cloudflare", }), ], });在 Cloudflare Workers 上,沙箱使用 Dynamic Worker Loader API(無需額外設定)。在 Node.js 上,安裝 workerd 沙箱執行器:
npm install @emdash-cms/sandbox-workerd然後明確傳遞執行器:
emdash({ marketplace: "https://marketplace.emdashcms.com", sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox", })在開發中,安裝
miniflare作為開發依賴以加快沙箱啟動:npm install -D miniflare -
管理員存取 — 只有管理員可以安裝或移除外掛。
瀏覽和安裝
- 開啟管理面板,導覽到 外掛 > 市場
- 瀏覽或搜尋外掛
- 點擊外掛卡片查看詳情頁 — README、截圖、能力和安全稽核結果
- 點擊 安裝
- 查看能力同意對話框 — 顯示外掛將能夠存取的內容
- 確認安裝
外掛將被下載、儲存在您站點的 R2 儲存桶中,並載入沙箱執行器中。它會立即啟用。
能力同意
安裝前,您將看到一個對話框,列出外掛需要存取的內容:
| 能力 | 含義 |
|---|---|
content:read | 讀取您的內容 |
content:write | 建立、更新和刪除內容 |
media:read | 存取您的媒體庫 |
media:write | 上傳和管理媒體 |
network:request | 向特定主機發送網路請求 |
安全稽核
市場中的每個外掛版本都經過了自動安全稽核。稽核結果顯示在外掛卡片上:
- 通過 — 未發現問題
- 警告 — 標記了輕微問題(請查看發現結果)
- 未通過 — 偵測到重大安全問題
您可以在外掛的詳情頁查看完整的稽核報告,包括各項發現及其嚴重程度。
更新
當已安裝外掛有新版本時:
- 在管理面板中前往 外掛
- 市場外掛顯示 有可用更新 標記
- 點擊 更新 查看變更日誌和任何能力變化
- 如果新版本需要額外能力,您將看到差異並需要批准
- 確認更新
解除安裝
- 在管理面板中前往 外掛
- 點擊要移除的市場外掛
- 點擊 解除安裝
- 選擇是保留還是刪除外掛的儲存資料
- 確認
外掛的沙箱程式碼將從您的 R2 儲存桶中移除,並立即停止執行。
從設定安裝
原生外掛 — 您自己的程式碼或透過 npm 安裝的套件 — 直接新增到 Astro 設定中。以下範例註冊 SEO 外掛:
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
import seoPlugin from "@emdash-cms/plugin-seo";
export default defineConfig({
integrations: [
emdash({
plugins: [
seoPlugin({ generateSitemap: true }),
],
}),
],
});
原生外掛:
- 在程序內執行(不在沙箱中)
- 擁有對 Node.js API 的完全存取權限
- 在建置時和每次伺服器啟動時載入
- 不能從管理 UI 安裝或移除
市場 vs. 設定 — 何時使用哪個
| 市場(沙箱) | 設定(原生或程序內沙箱) | |
|---|---|---|
| 安裝方式 | 管理 UI 一鍵安裝 | 程式碼修改 + npm install + 部署 |
| 執行 | 透過設定的執行器的沙箱執行環境 | 程序內(或如果列在 sandboxed: [] 中且執行器可用則為沙箱) |
| 能力 | 由沙箱橋接強制執行 — ctx.* 閘控加執行時隔離 | 僅 ctx.* 閘控(程序內外掛可透過直接 fetch()、env、imports 繞過) |
| Node.js API | 不可用 | 完全存取(僅限程序內) |
| React 管理頁面 | 否(使用 Block Kit 代替) | 是(原生外掛) |
| PT 渲染元件 | 否 | 是(原生外掛) |
| 更新 | 管理中一鍵更新 | 版本升級 + 部署 |
| 最適合 | 大多數外掛 | 需要建置時整合的外掛 |