Administratoren können sandboxed Plugins aus dem Plugin-Register installieren oder npm-Pakete in astro.config.mjs registrieren. Konfigurationsbasierte Plugins können in der Sandbox oder im Site-Prozess laufen.
Auf Admin-Installationen vorbereiten
Register-Installationen erfordern:
- Ein Administratorkonto mit der Berechtigung
plugins:manage. - Konfigurierten Speicher für heruntergeladene Plugin-Bundles.
- Einen verfügbaren Sandbox-Runner.
Auf Cloudflare Workers verwenden Sie sandbox() aus @emdash-cms/cloudflare:
import { sandbox } from "@emdash-cms/cloudflare";
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
export default defineConfig({
integrations: [
emdash({
sandboxRunner: sandbox(),
}),
],
});
Der Cloudflare-Runner verwendet Worker Loader, um für jedes Plugin einen separaten Worker zu erstellen. Er erfordert den Workers Paid-Plan und ein worker_loaders-Binding namens LOADER. Sandboxed Plugins erreichen Content-, Medien-, Speicher-, Netzwerk- und E-Mail-APIs über PluginBridge, daher muss der Worker-Einstiegspunkt der Site diese Klasse exportieren.
Die *-cloudflare-Vorlagen exportieren PluginBridge, lassen das Worker-Loader-Binding aber auskommentiert, sodass neue Projekte auf dem Workers-Free-Plan deployen können. Aktivieren Sie sandboxed Plugins beim Scaffolding oder folgen Sie der Cloudflare-Sandbox-Einrichtung, um das Binding später hinzuzufügen. Der Helper sandbox() liest die effektive Wrangler-Konfiguration zur Build-Zeit. Ohne LOADER bleibt das Durchsuchen des Registers verfügbar, aber konfigurationsverwaltete sandboxed Plugins werden nicht geladen und Installations- oder Update-Anfragen geben SANDBOX_NOT_AVAILABLE zurück.
Unter Node.js installieren Sie den Runner und seine workerd-Peer-Abhängigkeit:
npm install @emdash-cms/sandbox-workerd workerd
Der workerd-Prozess führt den Plugin-Code getrennt vom Node.js-Server aus. Wählen Sie den Runner in der EmDash-Integration:
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
export default defineConfig({
integrations: [
emdash({
sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox",
}),
],
});
Siehe Plugin-Sandbox für Entwicklungseinrichtung, Runtime-Anforderungen, Ressourcenlimits und Fehler bei nicht verfügbarem Runner auf beiden Plattformen.
Aus dem Register installieren
- Öffnen Sie Registry im Admin-Panel.
- Suchen Sie nach einem Plugin und öffnen Sie seine Detailseite.
- Wählen Sie eine Release und prüfen Sie Publisher, Metadaten, angeforderte Berechtigungen und Verifizierungsstatus.
- Wählen Sie Install.
- Prüfen Sie die verifizierten Release-Kennungen und Berechtigungen im Zustimmungsdialog und bestätigen Sie.
EmDash verifiziert die aktuellen signierten Records des Publishers und prüft das heruntergeladene Bundle, bevor es über den Sandbox-Runner geladen wird. Das Plugin erscheint unter Plugins, wo Sie es deaktivieren oder konfigurieren können. Siehe Das Plugin-Register für das vollständige Verifizierungs- und Vertrauensmodell.
Berechtigungen prüfen
Der Zustimmungsdialog zeigt jede vom Plugin deklarierte Berechtigung. Häufige Berechtigungen sind:
| Berechtigung | Gewährter Zugriff |
|---|---|
content:read | Site-Inhalte lesen |
content:write | Inhalte erstellen, aktualisieren und löschen |
content:revisions:read | Behaltenen Inhalts-Revisionsverlauf lesen |
schema:read | Collection- und Felddefinitionen lesen |
redirects:read | Weiterleitungsregeln lesen |
redirects:write | Ändern, wohin Besucher gesendet werden |
media:read | Sichere Metadaten für bereite Medien lesen |
media:bytes:read | Dateiinhalt und Inhalts-Hash bereiter Medien lesen |
media:metadata:write | Medien-Alt-Text, Bildunterschriften und Fokuspunkte ändern |
media:write | Medien hochladen, ersetzen und löschen |
network:request | Anfragen an die erlaubte Host-Liste des Plugins senden |
Der Dialog kennzeichnet auch Plugin-Routen, die als Model Context Protocol (MCP)-Tools freigelegt sind, wenn ein Plugin sie deklariert. Siehe Capabilities und Sicherheit für das vollständige Berechtigungsmodell.
Ein Plugin aktualisieren
- Öffnen Sie Plugins im Admin-Panel.
- Wählen Sie Check for updates.
- Wählen Sie Update bei einem Register-Plugin mit einer verfügbaren Release.
- Prüfen Sie den Zustimmungsdialog und bestätigen Sie das Update.
Register-Updates erfordern erneut eine Bestätigung, wenn sie Berechtigungen oder MCP-Tools hinzufügen oder wenn eine Route von authentifiziert zu öffentlich wechselt. EmDash lässt die installierte Version bestehen, bis Sie die Änderung genehmigen.
Ein Plugin deinstallieren
- Öffnen Sie Plugins im Admin-Panel und erweitern Sie das installierte Plugin.
- Wählen Sie Uninstall.
- Wählen Sie Also delete plugin storage data nur, wenn Sie die gespeicherten Daten des Plugins für eine spätere Neuinstallation nicht brauchen.
- Bestätigen Sie die Deinstallation.
EmDash entfernt das installierte Bundle und lädt das Plugin nicht mehr. Plugin-Speicherdaten bleiben standardmäßig erhalten.
Aus npm installieren
Native Plugins und konfigurationsverwaltete sandboxed Plugins installieren sich als npm-Abhängigkeiten. Folgen Sie den Anweisungen des Pakets, um plugins: [] oder sandboxed: [] zu wählen.
Das folgende Beispiel registriert das native Field-Kit-Plugin:
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
import { fieldKitPlugin } from "@emdash-cms/plugin-field-kit";
export default defineConfig({
integrations: [
emdash({
plugins: [fieldKitPlugin()],
}),
],
});
Konfigurationsverwaltete Plugins ändern sich, wenn Sie die npm-Abhängigkeit aktualisieren und die Site deployen. Sie können nicht über das Admin-Panel installiert oder entfernt werden.
Eine Installationsmethode wählen
| Register | npm mit sandboxed: [] | npm mit plugins: [] | |
|---|---|---|---|
| Installieren und aktualisieren | Admin-Panel | Abhängigkeitsänderung und Deploy | Abhängigkeitsänderung und Deploy |
| Ausführung | Konfigurierter Sandbox-Runner | Konfigurierter Sandbox-Runner | Site-Prozess |
| Zugriff auf EmDash | Nur deklarierte Plugin-APIs | Nur deklarierte Plugin-APIs | Deklarierte Plugin-APIs plus direkter Prozesszugriff |
Node.js-APIs und direktes fetch() | Nicht verfügbar | Nicht verfügbar | Verfügbar |
| React-Admin-Komponenten | Nicht verfügbar | Nicht verfügbar | Verfügbar |
| Portable-Text-Renderer | Nicht verfügbar | Nicht verfügbar | Verfügbar |
Nutzen Sie ein natives Plugin, wenn es React-Admin-Komponenten, Portable-Text-Renderer, Seitenfragmente oder direkten Zugriff auf den Site-Prozess braucht. Nutzen Sie ein sandboxed Plugin, wenn es über die deklarierten Plugin-APIs arbeiten kann.