安装插件

本页内容

EmDash 插件可以通过两种方式安装:通过管理面板从 marketplace 安装,或直接在 Astro 配置中添加。Marketplace 插件始终在沙箱中运行;基于配置的插件根据它们声明的数组(sandboxed: [] vs plugins: [])在沙箱或进程内运行。

从 Marketplace 安装

管理面板包含一个 marketplace 浏览器,您可以在其中搜索、安装和管理插件。

前置条件

要安装 marketplace 插件,您的站点需要:

  1. 配置沙箱运行器 — Marketplace 插件在隔离的运行时环境中运行,这需要沙箱运行器。以下配置可启用它:

    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",
        }),
      ],
    });
  2. 管理员访问权限 — 只有管理员才能安装或删除插件。

浏览和安装

  1. 打开管理面板并导航到 插件 > Marketplace
  2. 浏览或搜索插件
  3. 点击插件卡片查看其详情页面 — README、截图、功能权限和安全审计结果
  4. 点击 安装
  5. 查看功能权限同意对话框 — 这会显示插件可以访问的内容
  6. 确认安装

插件将被下载,存储在您站点的 R2 存储桶中,并加载到沙箱运行器中。它会立即生效。

功能权限同意

在安装之前,您会看到一个对话框,列出插件需要访问的内容:

功能权限含义
content:read读取您的内容
content:write创建、更新和删除内容
media:read访问您的媒体库
media:write上传和管理媒体
network:request向特定主机发送网络请求

安全审计

marketplace 中的每个插件版本都经过了自动安全审计。审计结果会显示在插件卡片上:

  • Pass — 未发现问题
  • Warn — 发现轻微问题(请查看详细结果)
  • Fail — 检测到重大安全问题

您可以在插件的详情页面上查看完整的审计报告,包括各个发现及其严重程度。

更新

当已安装插件的新版本可用时:

  1. 在管理面板中进入 插件
  2. Marketplace 插件会显示 更新可用 徽章
  3. 点击 更新 查看更新日志和任何功能权限变更
  4. 如果新版本需要额外的功能权限,您会看到差异并需要批准
  5. 确认更新

卸载

  1. 在管理面板中进入 插件
  2. 点击您要删除的 marketplace 插件
  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
  • 在构建时和每次服务器启动时加载
  • 无法从管理界面安装或删除

Marketplace vs. 配置 — 何时使用哪个

Marketplace(沙箱)配置(原生或进程内沙箱)
安装方式管理界面一键安装代码更改 + npm install + 部署
执行方式通过配置的运行器在沙箱运行时中执行进程内(或如果列在 sandboxed: [] 下且运行器可用则在沙箱中)
功能权限由沙箱桥强制执行 — ctx.* 控制加运行时隔离ctx.* 控制(进程内插件可以通过直接 fetch()、env、imports 绕过)
Node.js API不可用完全访问(仅进程内)
React 管理页面否(改用 Block Kit)是(原生插件)
PT 渲染组件是(原生插件)
更新管理界面一键更新版本升级 + 部署
最适合大多数插件需要构建时集成的插件