安裝外掛

本頁內容

EmDash 外掛可以透過兩種方式安裝:透過管理儀表板從市場安裝,或直接在 Astro 設定中新增。市場外掛始終在沙箱中執行;基於設定的外掛根據宣告的陣列(sandboxed: [] vs plugins: [])在沙箱或程序內執行。

從市場安裝

管理儀表板包含一個市場瀏覽器,您可以在其中搜尋、安裝和管理外掛。

前提條件

要安裝市場外掛,您的站點需要:

  1. 設定沙箱執行器 — 市場外掛在隔離的執行環境中執行,需要沙箱執行器。以下設定啟用它:

    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
  2. 管理員存取 — 只有管理員可以安裝或移除外掛。

瀏覽和安裝

  1. 開啟管理面板,導覽到 外掛 > 市場
  2. 瀏覽或搜尋外掛
  3. 點擊外掛卡片查看詳情頁 — README、截圖、能力和安全稽核結果
  4. 點擊 安裝
  5. 查看能力同意對話框 — 顯示外掛將能夠存取的內容
  6. 確認安裝

外掛將被下載、儲存在您站點的 R2 儲存桶中,並載入沙箱執行器中。它會立即啟用。

能力同意

安裝前,您將看到一個對話框,列出外掛需要存取的內容:

能力含義
content:read讀取您的內容
content:write建立、更新和刪除內容
media:read存取您的媒體庫
media:write上傳和管理媒體
network:request向特定主機發送網路請求

安全稽核

市場中的每個外掛版本都經過了自動安全稽核。稽核結果顯示在外掛卡片上:

  • 通過 — 未發現問題
  • 警告 — 標記了輕微問題(請查看發現結果)
  • 未通過 — 偵測到重大安全問題

您可以在外掛的詳情頁查看完整的稽核報告,包括各項發現及其嚴重程度。

更新

當已安裝外掛有新版本時:

  1. 在管理面板中前往 外掛
  2. 市場外掛顯示 有可用更新 標記
  3. 點擊 更新 查看變更日誌和任何能力變化
  4. 如果新版本需要額外能力,您將看到差異並需要批准
  5. 確認更新

解除安裝

  1. 在管理面板中前往 外掛
  2. 點擊要移除的市場外掛
  3. 點擊 解除安裝
  4. 選擇是保留還是刪除外掛的儲存資料
  5. 確認

外掛的沙箱程式碼將從您的 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 渲染元件是(原生外掛)
更新管理中一鍵更新版本升級 + 部署
最適合大多數外掛需要建置時整合的外掛