Les administrateurs peuvent installer des plugins sandboxed depuis le registre de plugins ou enregistrer des paquets npm dans astro.config.mjs. Les plugins basés sur la configuration peuvent s’exécuter dans le sandbox ou dans le processus du site.
Se préparer aux installations depuis l’admin
Les installations depuis le registre nécessitent :
- Un compte administrateur avec la permission
plugins:manage. - Un stockage configuré pour les bundles de plugins téléchargés.
- Un sandbox runner disponible.
Sur Cloudflare Workers, utilisez sandbox() de @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(),
}),
],
});
Le runner Cloudflare utilise Worker Loader pour créer un Worker séparé pour chaque plugin. Il nécessite le plan Workers Paid et un binding worker_loaders nommé LOADER. Les plugins sandboxed atteignent les APIs de contenu, médias, stockage, réseau et e-mail via PluginBridge, donc le point d’entrée Worker du site doit exporter cette classe.
Les modèles *-cloudflare exportent PluginBridge mais laissent le binding Worker Loader en commentaire, de sorte que les nouveaux projets peuvent se déployer sur le plan gratuit Workers. Activez les plugins sandboxed pendant le scaffolding ou suivez la configuration du sandbox Cloudflare pour ajouter le binding plus tard. L’aide sandbox() lit la configuration Wrangler effective au moment du build. Sans LOADER, la navigation dans le registre reste disponible, mais les plugins sandboxed gérés par configuration ne se chargent pas et les requêtes d’installation ou de mise à jour renvoient SANDBOX_NOT_AVAILABLE.
Sous Node.js, installez le runner et sa dépendance peer workerd :
npm install @emdash-cms/sandbox-workerd workerd
Le processus workerd exécute le code du plugin séparément du serveur Node.js. Sélectionnez le runner dans l’intégration EmDash :
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
export default defineConfig({
integrations: [
emdash({
sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox",
}),
],
});
Voir Sandbox de plugins pour la configuration de développement, les exigences de runtime, les limites de ressources et les erreurs de runner indisponible sur les deux plateformes.
Installer depuis le registre
- Ouvrez Registry dans le panneau d’administration.
- Recherchez un plugin et ouvrez sa page de détail.
- Sélectionnez une release et examinez son éditeur, ses métadonnées, les permissions demandées et le statut de vérification.
- Sélectionnez Install.
- Examinez les identifiants de release vérifiés et les permissions dans la boîte de dialogue de consentement, puis confirmez.
EmDash vérifie les enregistrements signés actuels de l’éditeur et contrôle le bundle téléchargé avant de le charger via le sandbox runner. Le plugin apparaît sous Plugins, où vous pouvez le désactiver ou le configurer. Voir Le registre de plugins pour le modèle complet de vérification et de confiance.
Examiner les permissions
La boîte de dialogue de consentement montre chaque permission déclarée par le plugin. Les permissions courantes incluent :
| Permission | Accès accordé |
|---|---|
content:read | Lire le contenu du site |
content:write | Créer, mettre à jour et supprimer du contenu |
content:revisions:read | Lire l’historique des révisions de contenu conservé |
schema:read | Lire les définitions de collection et de champs |
redirects:read | Lire les règles de redirection |
redirects:write | Changer où les visiteurs sont envoyés |
media:read | Lire les métadonnées sûres des médias prêts |
media:bytes:read | Lire le contenu du fichier et le hash de contenu des médias prêts |
media:metadata:write | Modifier le texte alt, les légendes et les points focaux des médias |
media:write | Téléverser, remplacer et supprimer des médias |
network:request | Envoyer des requêtes à la liste d’hôtes autorisés du plugin |
La boîte de dialogue identifie aussi les routes de plugin exposées comme outils Model Context Protocol (MCP) lorsqu’un plugin les déclare. Voir Capabilities et sécurité pour le modèle complet de permissions.
Mettre à jour un plugin
- Ouvrez Plugins dans le panneau d’administration.
- Sélectionnez Check for updates.
- Sélectionnez Update sur un plugin du registre avec une release disponible.
- Examinez la boîte de dialogue de consentement, puis confirmez la mise à jour.
Les mises à jour du registre exigent une autre confirmation lorsqu’elles ajoutent des permissions ou des outils MCP, ou lorsqu’une route passe d’authentifiée à publique. EmDash laisse la version installée en place jusqu’à ce que vous approuviez le changement.
Désinstaller un plugin
- Ouvrez Plugins dans le panneau d’administration et développez le plugin installé.
- Sélectionnez Uninstall.
- Sélectionnez Also delete plugin storage data uniquement si vous n’avez pas besoin des données stockées du plugin pour une réinstallation ultérieure.
- Confirmez la désinstallation.
EmDash retire le bundle installé et arrête de charger le plugin. Les données de stockage du plugin restent par défaut.
Installer depuis npm
Les plugins natifs et les plugins sandboxed gérés par configuration s’installent comme dépendances npm. Suivez les instructions du paquet pour choisir plugins: [] ou sandboxed: [].
L’exemple suivant enregistre le plugin natif Field Kit :
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()],
}),
],
});
Les plugins gérés par configuration changent lorsque vous mettez à jour la dépendance npm et déployez le site. Ils ne peuvent pas être installés ou retirés depuis le panneau d’administration.
Choisir une méthode d’installation
| Registre | npm avec sandboxed: [] | npm avec plugins: [] | |
|---|---|---|---|
| Installer et mettre à jour | Panneau d’administration | Changement de dépendance et déploiement | Changement de dépendance et déploiement |
| Exécution | Sandbox runner configuré | Sandbox runner configuré | Processus du site |
| Accès à EmDash | Uniquement les APIs de plugin déclarées | Uniquement les APIs de plugin déclarées | APIs de plugin déclarées plus accès direct au processus |
APIs Node.js et fetch() direct | Indisponible | Indisponible | Disponible |
| Composants d’admin React | Indisponible | Indisponible | Disponible |
| Renderers Portable Text | Indisponible | Indisponible | Disponible |
Utilisez un plugin natif lorsqu’il a besoin de composants d’admin React, de renderers Portable Text, de fragments de page ou d’un accès direct au processus du site. Utilisez un plugin sandboxed lorsqu’il peut fonctionner via les APIs de plugin déclarées.