Instalar Plugins

En esta página

Los plugins de EmDash pueden instalarse de dos formas: desde el marketplace a través del panel de administración, o agregados directamente en tu configuración de Astro. Los plugins del marketplace siempre se ejecutan en sandbox; los plugins basados en configuración se ejecutan en sandbox o en proceso dependiendo del array en el que se declaran (sandboxed: [] vs plugins: []).

Desde el Marketplace

El panel de administración incluye un navegador de marketplace donde puedes buscar, instalar y gestionar plugins.

Requisitos previos

Para instalar plugins del marketplace, tu sitio necesita:

  1. Runner de sandbox configurado — Los plugins del marketplace se ejecutan en un runtime aislado, lo que requiere el runner de sandbox. La siguiente configuración lo habilita:

    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",
        }),
      ],
    });

    En Cloudflare Workers, el sandboxing usa la API Dynamic Worker Loader (no se necesita configuración adicional). En Node.js, instala el runner de sandbox workerd:

    npm install @emdash-cms/sandbox-workerd

    Luego pasa el runner explícitamente:

    emdash({
      marketplace: "https://marketplace.emdashcms.com",
      sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox",
    })

    En desarrollo, instala miniflare como dependencia de desarrollo para un inicio más rápido del sandbox:

    npm install -D miniflare
  2. Acceso de administrador — Solo los administradores pueden instalar o eliminar plugins.

Explorar e Instalar

  1. Abre el panel de administración y navega a Plugins > Marketplace
  2. Explora o busca un plugin
  3. Haz clic en la tarjeta del plugin para ver su página de detalle — README, capturas de pantalla, capacidades y resultados de auditoría de seguridad
  4. Haz clic en Instalar
  5. Revisa el diálogo de consentimiento de capacidades — esto muestra a qué podrá acceder el plugin
  6. Confirma la instalación

El plugin se descargará, almacenará en el bucket R2 de tu sitio y se cargará en el runner de sandbox. Está activo inmediatamente.

Consentimiento de Capacidades

Antes de la instalación, verás un diálogo que lista a qué necesita acceso el plugin:

CapacidadQué significa
content:readLeer tu contenido
content:writeCrear, actualizar y eliminar contenido
media:readAcceder a tu biblioteca de medios
media:writeSubir y gestionar medios
network:requestRealizar peticiones de red a hosts específicos

Auditoría de Seguridad

Cada versión de plugin en el marketplace ha pasado por una auditoría de seguridad automatizada. El veredicto de la auditoría aparece en la tarjeta del plugin:

  • Aprobado — No se encontraron problemas
  • Advertencia — Preocupaciones menores señaladas (revisa los hallazgos)
  • Rechazado — Problemas de seguridad significativos detectados

Puedes ver el informe completo de auditoría en la página de detalle del plugin, incluyendo hallazgos individuales y su severidad.

Actualizaciones

Cuando una versión más nueva de un plugin instalado está disponible:

  1. Ve a Plugins en el panel de administración
  2. Los plugins del marketplace muestran una insignia Actualización disponible
  3. Haz clic en Actualizar para ver el changelog y cualquier cambio de capacidades
  4. Si la nueva versión requiere capacidades adicionales, verás un diff y necesitarás aprobar
  5. Confirma para actualizar

Desinstalación

  1. Ve a Plugins en el panel de administración
  2. Haz clic en el plugin del marketplace que quieres eliminar
  3. Haz clic en Desinstalar
  4. Elige si mantener o eliminar los datos almacenados del plugin
  5. Confirma

El código sandbox del plugin se elimina de tu bucket R2 y deja de ejecutarse inmediatamente.

Desde Configuración

Los plugins nativos — tu propio código, o paquetes instalados vía npm — se agregan directamente a la configuración de Astro. El siguiente ejemplo registra el 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 }),
      ],
    }),
  ],
});

Los plugins nativos:

  • Se ejecutan en proceso (no en sandbox)
  • Tienen acceso completo a las APIs de Node.js
  • Se cargan en tiempo de build y en cada inicio del servidor
  • No pueden instalarse ni eliminarse desde la UI de administración

Marketplace vs. configuración — cuándo usar cuál

Marketplace (sandbox)Configuración (nativo o sandbox en proceso)
Método de instalaciónUn clic en la UI de adminCambio de código + npm install + deploy
EjecuciónRuntime sandbox vía el runner configuradoEn proceso (o sandbox si se lista bajo sandboxed: [] y hay un runner disponible)
CapacidadesAplicadas por el puente sandbox — gating ctx.* más aislamiento en runtimeSolo gating ctx.* (los plugins en proceso pueden evadir vía fetch() directo, env, imports)
APIs de Node.jsNo disponiblesAcceso completo (solo en proceso)
Páginas admin ReactNo (Block Kit en su lugar)Sí (plugins nativos)
Componentes de renderizado PTNoSí (plugins nativos)
ActualizacionesUn clic en adminBump de versión + deploy
Mejor paraLa mayoría de pluginsPlugins que necesitan integración en tiempo de build