安装插件

本页内容

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 渲染组件是(原生插件)
更新管理中一键更新版本升级 + 部署
最适合大多数插件需要构建时集成的插件