Los administradores pueden instalar plugins en sandbox desde el registro de plugins o registrar paquetes de npm en astro.config.mjs. Los plugins basados en la configuración pueden ejecutarse en el sandbox o en el proceso del sitio.
Prepararse para instalaciones desde el admin
Las instalaciones desde el registro requieren:
- Una cuenta de administrador con el permiso
plugins:manage. - Almacenamiento configurado para los paquetes de plugins descargados.
- Un ejecutor de sandbox disponible.
En Cloudflare Workers, usa 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(),
}),
],
});
El ejecutor de Cloudflare usa Worker Loader para crear un Worker independiente para cada plugin. Requiere el plan Workers Paid y un binding worker_loaders llamado LOADER. Los plugins en sandbox acceden a las API de contenido, medios, almacenamiento, red y correo electrónico a través de PluginBridge, así que el punto de entrada del Worker del sitio debe exportar esa clase.
Las plantillas *-cloudflare exportan PluginBridge, pero dejan comentado el binding de Worker Loader para que los proyectos nuevos puedan desplegarse en el plan gratuito de Workers. Habilita los plugins en sandbox durante la generación del proyecto o sigue la configuración del sandbox de Cloudflare para añadir el binding más adelante. El helper sandbox() lee la configuración efectiva de Wrangler en tiempo de compilación. Sin LOADER, la exploración del registro sigue disponible, pero los plugins en sandbox gestionados por la configuración no se cargan, y las solicitudes de instalación o actualización devuelven SANDBOX_NOT_AVAILABLE.
En Node.js, instala el ejecutor y su dependencia entre pares workerd:
npm install @emdash-cms/sandbox-workerd workerd
El proceso workerd ejecuta el código del plugin por separado del servidor de Node.js. Selecciona el ejecutor en la integración de EmDash:
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
export default defineConfig({
integrations: [
emdash({
sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox",
}),
],
});
Consulta Configurar el sandbox de plugins para la configuración de desarrollo, los requisitos de tiempo de ejecución, los límites de recursos y los errores por ejecutor no disponible en ambas plataformas.
Instalar desde el registro
- Abre Registry en el panel de administración.
- Busca un plugin y abre su página de detalle.
- Selecciona una versión y revisa su publicador, sus metadatos, los permisos solicitados y el estado de verificación.
- Selecciona Install.
- Revisa en el cuadro de diálogo de consentimiento los identificadores de la versión verificada y los permisos, y después confirma.
EmDash verifica los registros firmados actuales del publicador y comprueba el paquete descargado antes de cargarlo a través del ejecutor de sandbox. El plugin aparece en Plugins, donde puedes deshabilitarlo o configurarlo. Consulta El registro de plugins para ver el modelo completo de verificación y confianza.
Revisar permisos
El cuadro de diálogo de consentimiento muestra todos los permisos que declara el plugin. Entre los permisos habituales se incluyen:
| Permiso | Acceso concedido |
|---|---|
content:read | Leer el contenido del sitio |
content:write | Crear, actualizar y eliminar contenido |
content:revisions:read | Leer el historial de revisiones del contenido conservado |
schema:read | Leer las definiciones de colecciones y campos |
bylines:read | Leer los perfiles públicos de autoría y los créditos del contenido |
redirects:read | Leer las reglas de redirección |
redirects:write | Cambiar adónde se envía a los visitantes |
media:read | Leer los metadatos seguros de los medios listos |
media:bytes:read | Leer el contenido del archivo y el hash de contenido de los medios listos |
media:metadata:write | Cambiar el texto alternativo, los pies de foto y los puntos focales de los medios |
media:write | Subir, reemplazar y eliminar medios |
network:request | Enviar solicitudes a la lista de hosts permitidos del plugin |
El cuadro de diálogo también identifica las rutas del plugin expuestas como herramientas del Model Context Protocol (MCP) cuando un plugin las declara. Consulta Capabilities y seguridad para ver el modelo de permisos completo.
Actualizar un plugin
- Abre Plugins en el panel de administración.
- Selecciona Check for updates.
- Selecciona Update en un plugin del registro que tenga una versión disponible.
- Revisa el cuadro de diálogo de consentimiento y después confirma la actualización.
Las actualizaciones del registro requieren otra confirmación cuando añaden permisos o herramientas MCP, o cuando una ruta pasa de autenticada a pública. EmDash deja instalada la versión actual hasta que apruebes el cambio.
Las actualizaciones explícitas solo avanzan. Las actualizaciones que siguen la última versión del registro pueden revertirse si el publicador retira la versión más reciente. Para volver a una versión anterior en cualquier otro momento, desinstala el plugin e instala esa versión desde su página del registro. Al desinstalar se conservan los datos almacenados del plugin, a menos que elijas eliminarlos.
Desinstalar un plugin
- Abre Plugins en el panel de administración y expande el plugin instalado.
- Selecciona Uninstall.
- Selecciona Also delete plugin storage data solo si no necesitas los datos almacenados del plugin para una reinstalación posterior.
- Confirma la desinstalación.
EmDash elimina el paquete instalado y deja de cargar el plugin. Los datos de almacenamiento del plugin permanecen de forma predeterminada.
Instalar desde npm
Los plugins nativos y los plugins en sandbox gestionados por la configuración se instalan como dependencias de npm. Sigue las instrucciones del paquete para elegir plugins: [] o sandboxed: [].
El siguiente ejemplo registra el plugin nativo 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()],
}),
],
});
Los plugins gestionados por la configuración cambian cuando actualizas la dependencia de npm y despliegas el sitio. No se pueden instalar ni eliminar desde el panel de administración.
Elegir un método de instalación
| Registro | npm con sandboxed: [] | npm con plugins: [] | |
|---|---|---|---|
| Instalación y actualización | Panel de administración | Cambio de dependencia y despliegue | Cambio de dependencia y despliegue |
| Ejecución | Ejecutor de sandbox configurado | Ejecutor de sandbox configurado | Proceso del sitio |
| Acceso a EmDash | Solo las API declaradas del plugin | Solo las API declaradas del plugin | Las API declaradas del plugin más acceso directo al proceso |
API de Node.js y fetch() directo | No disponible | No disponible | Disponible |
| Componentes de administración en React | No disponible | No disponible | Disponible |
| Renderizadores de Portable Text | No disponible | No disponible | Disponible |
Usa un plugin nativo cuando necesite componentes de administración en React, renderizadores de Portable Text, fragmentos de página o acceso directo al proceso del sitio. Usa un plugin en sandbox cuando pueda funcionar a través de las API de plugins declaradas.