EmDash-Plugins können auf zwei Arten installiert werden: vom Marktplatz über das Admin-Dashboard oder direkt in Ihrer Astro-Konfiguration hinzugefügt. Marktplatz-Plugins laufen immer in einer Sandbox; konfigurationsbasierte Plugins laufen je nachdem, in welchem Array sie deklariert sind (sandboxed: [] vs. plugins: []), sandboxed oder im Prozess.
Vom Marktplatz
Das Admin-Dashboard enthält einen Marktplatz-Browser, in dem Sie Plugins suchen, installieren und verwalten können.
Voraussetzungen
Um Marktplatz-Plugins zu installieren, benötigt Ihre Seite:
-
Sandbox-Runner konfiguriert — Marktplatz-Plugins laufen in einer isolierten Laufzeitumgebung, die den Sandbox-Runner erfordert. Die folgende Konfiguration aktiviert ihn:
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", }), ], });Auf Cloudflare Workers verwendet das Sandboxing die Dynamic Worker Loader API (kein zusätzliches Setup erforderlich). Auf Node.js installieren Sie den workerd-Sandbox-Runner:
npm install @emdash-cms/sandbox-workerdÜbergeben Sie dann den Runner explizit:
emdash({ marketplace: "https://marketplace.emdashcms.com", sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox", })In der Entwicklung installieren Sie
miniflareals Dev-Abhängigkeit für schnelleren Sandbox-Start:npm install -D miniflare -
Admin-Zugriff — Nur Administratoren können Plugins installieren oder entfernen.
Durchsuchen und Installieren
- Öffnen Sie das Admin-Panel und navigieren Sie zu Plugins > Marktplatz
- Durchsuchen oder suchen Sie ein Plugin
- Klicken Sie auf die Plugin-Karte, um die Detailseite zu sehen — README, Screenshots, Fähigkeiten und Ergebnisse des Sicherheitsaudits
- Klicken Sie auf Installieren
- Überprüfen Sie den Fähigkeits-Zustimmungsdialog — dieser zeigt an, worauf das Plugin zugreifen kann
- Bestätigen Sie die Installation
Das Plugin wird heruntergeladen, in Ihrem R2-Bucket der Seite gespeichert und im Sandbox-Runner geladen. Es ist sofort aktiv.
Fähigkeits-Zustimmung
Vor der Installation sehen Sie einen Dialog, der auflistet, worauf das Plugin Zugriff benötigt:
| Fähigkeit | Bedeutung |
|---|---|
content:read | Ihre Inhalte lesen |
content:write | Inhalte erstellen, aktualisieren und löschen |
media:read | Auf Ihre Medienbibliothek zugreifen |
media:write | Medien hochladen und verwalten |
network:request | Netzwerkanfragen an bestimmte Hosts stellen |
Sicherheitsaudit
Jede Plugin-Version im Marktplatz wurde einem automatisierten Sicherheitsaudit unterzogen. Das Audit-Ergebnis erscheint auf der Plugin-Karte:
- Bestanden — Keine Probleme gefunden
- Warnung — Geringfügige Bedenken markiert (überprüfen Sie die Ergebnisse)
- Nicht bestanden — Erhebliche Sicherheitsprobleme erkannt
Sie können den vollständigen Audit-Bericht auf der Detailseite des Plugins einsehen, einschließlich einzelner Befunde und deren Schweregrad.
Updates
Wenn eine neuere Version eines installierten Plugins verfügbar ist:
- Gehen Sie zu Plugins im Admin-Panel
- Marktplatz-Plugins zeigen ein Update verfügbar-Badge
- Klicken Sie auf Update, um das Changelog und eventuelle Fähigkeitsänderungen zu sehen
- Wenn die neue Version zusätzliche Fähigkeiten erfordert, sehen Sie einen Diff und müssen genehmigen
- Bestätigen Sie das Update
Deinstallation
- Gehen Sie zu Plugins im Admin-Panel
- Klicken Sie auf das Marktplatz-Plugin, das Sie entfernen möchten
- Klicken Sie auf Deinstallieren
- Wählen Sie, ob die gespeicherten Daten des Plugins behalten oder gelöscht werden sollen
- Bestätigen
Der Sandbox-Code des Plugins wird aus Ihrem R2-Bucket entfernt und die Ausführung wird sofort gestoppt.
Aus der Konfiguration
Native Plugins — Ihr eigener Code oder über npm installierte Pakete — werden direkt zur Astro-Konfiguration hinzugefügt. Das folgende Beispiel registriert das SEO-Plugin:
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 }),
],
}),
],
});
Native Plugins:
- Laufen im Prozess (nicht sandboxed)
- Haben vollen Zugriff auf Node.js-APIs
- Werden zur Build-Zeit und bei jedem Serverstart geladen
- Können nicht über die Admin-UI installiert oder entfernt werden
Marktplatz vs. Konfiguration — wann welches verwenden
| Marktplatz (sandboxed) | Konfiguration (nativ oder In-Process sandboxed) | |
|---|---|---|
| Installationsmethode | Ein-Klick in der Admin-UI | Code-Änderung + npm install + Deploy |
| Ausführung | Sandbox-Laufzeit über den konfigurierten Runner | Im Prozess (oder sandboxed, wenn unter sandboxed: [] aufgelistet und ein Runner verfügbar ist) |
| Fähigkeiten | Durch die Sandbox-Bridge erzwungen — ctx.*-Gating plus Laufzeit-Isolation | Nur ctx.*-Gating (In-Process-Plugins können über direkten fetch(), env, imports umgehen) |
| Node.js-APIs | Nicht verfügbar | Voller Zugriff (nur im Prozess) |
| React-Admin-Seiten | Nein (Block Kit stattdessen) | Ja (native Plugins) |
| PT-Rendering-Komponenten | Nein | Ja (native Plugins) |
| Updates | Ein-Klick im Admin | Versions-Bump + Deploy |
| Am besten für | Die meisten Plugins | Plugins, die Build-Zeit-Integration benötigen |