Les plugins EmDash peuvent être installés de deux façons : depuis le marketplace via le panneau d’administration, ou ajoutés directement dans votre configuration Astro. Les plugins du marketplace s’exécutent toujours en sandbox ; les plugins basés sur la configuration s’exécutent en sandbox ou en processus selon le tableau dans lequel ils sont déclarés (sandboxed: [] vs plugins: []).
Depuis le Marketplace
Le panneau d’administration inclut un navigateur de marketplace où vous pouvez chercher, installer et gérer des plugins.
Prérequis
Pour installer des plugins du marketplace, votre site a besoin de :
-
Runner sandbox configuré — Les plugins du marketplace s’exécutent dans un runtime isolé, ce qui nécessite le runner sandbox. La configuration suivante l’active :
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", }), ], });Sur Cloudflare Workers, le sandboxing utilise l’API Dynamic Worker Loader (aucune configuration supplémentaire nécessaire). Sur Node.js, installez le runner sandbox workerd :
npm install @emdash-cms/sandbox-workerdPuis passez le runner explicitement :
emdash({ marketplace: "https://marketplace.emdashcms.com", sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox", })En développement, installez
miniflarecomme dépendance de développement pour un démarrage sandbox plus rapide :npm install -D miniflare -
Accès administrateur — Seuls les administrateurs peuvent installer ou supprimer des plugins.
Parcourir et Installer
- Ouvrez le panneau d’administration et naviguez vers Plugins > Marketplace
- Parcourez ou recherchez un plugin
- Cliquez sur la carte du plugin pour voir sa page de détail — README, captures d’écran, capacités et résultats d’audit de sécurité
- Cliquez sur Installer
- Examinez le dialogue de consentement des capacités — celui-ci montre ce à quoi le plugin pourra accéder
- Confirmez l’installation
Le plugin sera téléchargé, stocké dans le bucket R2 de votre site et chargé dans le runner sandbox. Il est actif immédiatement.
Consentement des Capacités
Avant l’installation, vous verrez un dialogue listant ce dont le plugin a besoin comme accès :
| Capacité | Ce que cela signifie |
|---|---|
content:read | Lire votre contenu |
content:write | Créer, mettre à jour et supprimer du contenu |
media:read | Accéder à votre bibliothèque de médias |
media:write | Uploader et gérer les médias |
network:request | Effectuer des requêtes réseau vers des hôtes spécifiques |
Audit de Sécurité
Chaque version de plugin dans le marketplace a subi un audit de sécurité automatisé. Le verdict de l’audit apparaît sur la carte du plugin :
- Réussi — Aucun problème trouvé
- Avertissement — Préoccupations mineures signalées (examinez les résultats)
- Échoué — Problèmes de sécurité significatifs détectés
Vous pouvez consulter le rapport d’audit complet sur la page de détail du plugin, y compris les résultats individuels et leur gravité.
Mises à jour
Quand une version plus récente d’un plugin installé est disponible :
- Allez dans Plugins dans le panneau d’administration
- Les plugins du marketplace affichent un badge Mise à jour disponible
- Cliquez sur Mettre à jour pour voir le changelog et tout changement de capacités
- Si la nouvelle version requiert des capacités supplémentaires, vous verrez un diff et devrez approuver
- Confirmez la mise à jour
Désinstallation
- Allez dans Plugins dans le panneau d’administration
- Cliquez sur le plugin du marketplace que vous souhaitez supprimer
- Cliquez sur Désinstaller
- Choisissez de garder ou supprimer les données stockées du plugin
- Confirmez
Le code sandbox du plugin est supprimé de votre bucket R2 et son exécution s’arrête immédiatement.
Depuis la Configuration
Les plugins natifs — votre propre code, ou des packages installés via npm — sont ajoutés directement à la configuration Astro. L’exemple suivant enregistre le plugin 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 }),
],
}),
],
});
Les plugins natifs :
- S’exécutent en processus (pas en sandbox)
- Ont un accès complet aux APIs Node.js
- Sont chargés au moment du build et à chaque démarrage du serveur
- Ne peuvent pas être installés ni supprimés depuis l’UI d’administration
Marketplace vs. configuration — quand utiliser lequel
| Marketplace (sandbox) | Configuration (natif ou sandbox en processus) | |
|---|---|---|
| Méthode d’installation | Un clic dans l’UI admin | Changement de code + npm install + déploiement |
| Exécution | Runtime sandbox via le runner configuré | En processus (ou sandbox si listé sous sandboxed: [] et qu’un runner est disponible) |
| Capacités | Appliquées par le pont sandbox — gating ctx.* plus isolation runtime | Gating ctx.* uniquement (les plugins en processus peuvent contourner via fetch() direct, env, imports) |
| APIs Node.js | Non disponibles | Accès complet (en processus uniquement) |
| Pages admin React | Non (Block Kit à la place) | Oui (plugins natifs) |
| Composants de rendu PT | Non | Oui (plugins natifs) |
| Mises à jour | Un clic dans l’admin | Bump de version + déploiement |
| Idéal pour | La plupart des plugins | Plugins nécessitant une intégration au build |