Les administrateurs peuvent installer des plugins sandboxés 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 bac à sable ou dans le processus du site.
Se préparer aux installations depuis l’admin
Les installations depuis le registre nécessitent :
- Un compte administrateur disposant de la permission
plugins:manage. - Un stockage configuré pour les bundles de plugins téléchargés.
- Un runner de bac à sable 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 distinct pour chaque plugin. Il nécessite le plan Workers Paid et une liaison worker_loaders nommée LOADER. Les plugins sandboxés accèdent aux API de contenu, de médias, de stockage, de réseau et d’e-mail via PluginBridge ; le point d’entrée Worker du site doit donc exporter cette classe.
Les modèles *-cloudflare exportent PluginBridge mais laissent la liaison Worker Loader en commentaire, afin que les nouveaux projets puissent être déployés sur le plan gratuit de Workers. Activez les plugins sandboxés lors de la génération du projet, ou suivez la configuration du bac à sable Cloudflare pour ajouter la liaison plus tard. L’assistant sandbox() lit la configuration Wrangler effective au moment du build. Sans LOADER, la navigation dans le registre reste disponible, mais les plugins sandboxés gérés par la configuration ne se chargent pas, et les demandes d’installation ou de mise à jour renvoient SANDBOX_NOT_AVAILABLE.
Sur Node.js, installez le runner et sa dépendance homologue 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",
}),
],
});
Consultez Configurer le bac à sable des plugins pour la configuration de développement, les exigences d’exécution, les limites de ressources et les erreurs liées à un 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 version et examinez son éditeur, ses métadonnées, les permissions demandées et son état de vérification.
- Sélectionnez Install.
- Examinez dans la boîte de dialogue de consentement les identifiants de la version vérifiée et les permissions, 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 runner de bac à sable. Le plugin apparaît sous Plugins, où vous pouvez le désactiver ou le configurer. Consultez 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 affiche chaque permission déclarée par le plugin. Les permissions courantes comprennent :
| 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 conservé des révisions du contenu |
schema:read | Lire les définitions des collections et des champs |
bylines:read | Lire les profils publics de signature et les crédits du contenu |
redirects:read | Lire les règles de redirection |
redirects:write | Modifier la destination des visiteurs |
media:read | Lire les métadonnées sûres des médias prêts |
media:bytes:read | Lire le contenu des fichiers et le hachage de contenu des médias prêts |
media:metadata:write | Modifier le texte alternatif, 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. Consultez Capabilities et sécurité pour le modèle de permissions complet.
Mettre à jour un plugin
- Ouvrez Plugins dans le panneau d’administration.
- Sélectionnez Check for updates.
- Sélectionnez Update sur un plugin du registre pour lequel une version est disponible.
- Examinez la boîte de dialogue de consentement, puis confirmez la mise à jour.
Les mises à jour du registre demandent une confirmation supplémentaire lorsqu’elles ajoutent des permissions ou des outils MCP, ou lorsqu’une route passe d’authentifiée à publique. EmDash conserve la version installée jusqu’à ce que vous approuviez le changement.
Les mises à jour explicites ne vont que vers l’avant. Les mises à jour qui suivent la dernière version du registre peuvent être annulées si l’éditeur retire la version la plus récente. Pour revenir à une version plus ancienne à un autre moment, désinstallez le plugin et installez cette version depuis sa page du registre. La désinstallation conserve les données stockées du plugin, sauf si vous choisissez de les supprimer.
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 supprime le bundle installé et cesse de charger le plugin. Les données de stockage du plugin sont conservées par défaut.
Installer depuis npm
Les plugins natifs et les plugins sandboxés gérés par la 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 la configuration changent lorsque vous mettez à jour la dépendance npm et déployez le site. Ils ne peuvent pas être installés ni supprimés depuis le panneau d’administration.
Choisir une méthode d’installation
| Registre | npm avec sandboxed: [] | npm avec plugins: [] | |
|---|---|---|---|
| Installation et mise à jour | Panneau d’administration | Modification de la dépendance et déploiement | Modification de la dépendance et déploiement |
| Exécution | Runner de bac à sable configuré | Runner de bac à sable configuré | Processus du site |
| Accès à EmDash | Uniquement les API de plugin déclarées | Uniquement les API de plugin déclarées | API de plugin déclarées, plus accès direct au processus |
API Node.js et fetch() direct | Indisponible | Indisponible | Disponible |
| Composants d’administration React | Indisponible | Indisponible | Disponible |
| Moteurs de rendu Portable Text | Indisponible | Indisponible | Disponible |
Utilisez un plugin natif lorsqu’il a besoin de composants d’administration React, de moteurs de rendu Portable Text, de fragments de page ou d’un accès direct au processus du site. Utilisez un plugin sandboxé lorsqu’il peut fonctionner via les API de plugin déclarées.