Os plugins do EmDash podem ser instalados de duas maneiras: do marketplace através do painel de administração, ou adicionados diretamente na sua configuração Astro. Os plugins do marketplace sempre são executados em sandbox; plugins baseados em configuração são executados em sandbox ou em processo, dependendo do array em que são declarados (sandboxed: [] vs plugins: []).
Do Marketplace
O painel de administração inclui um navegador do marketplace onde você pode pesquisar, instalar e gerenciar plugins.
Pré-requisitos
Para instalar plugins do marketplace, seu site precisa de:
-
Sandbox runner configurado — Os plugins do marketplace são executados em um ambiente isolado, que requer o sandbox runner. A seguinte configuração o 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", }), ], }); -
Acesso de administrador — Apenas administradores podem instalar ou remover plugins.
Navegar e Instalar
- Abra o painel de administração e navegue até Plugins > Marketplace
- Navegue ou pesquise por um plugin
- Clique no card do plugin para ver sua página de detalhes — README, capturas de tela, capacidades e resultados de auditoria de segurança
- Clique em Instalar
- Revise o diálogo de consentimento de capacidades — isso mostra o que o plugin poderá acessar
- Confirme a instalação
O plugin será baixado, armazenado no bucket R2 do seu site e carregado no sandbox runner. Ele fica ativo imediatamente.
Consentimento de Capacidades
Antes da instalação, você verá um diálogo listando o que o plugin precisa acessar:
| Capacidade | O que significa |
|---|---|
content:read | Ler seu conteúdo |
content:write | Criar, atualizar e excluir conteúdo |
media:read | Acessar sua biblioteca de mídia |
media:write | Fazer upload e gerenciar mídia |
network:request | Fazer solicitações de rede para hosts específicos |
Auditoria de Segurança
Cada versão de plugin no marketplace passou por uma auditoria de segurança automatizada. O veredito da auditoria aparece no card do plugin:
- Pass — Nenhum problema encontrado
- Warn — Preocupações menores sinalizadas (revise os achados)
- Fail — Problemas de segurança significativos detectados
Você pode visualizar o relatório de auditoria completo na página de detalhes do plugin, incluindo achados individuais e sua gravidade.
Atualizações
Quando uma versão mais recente de um plugin instalado está disponível:
- Vá para Plugins no painel de administração
- Os plugins do marketplace mostram um badge de Atualização disponível
- Clique em Atualizar para ver o changelog e quaisquer alterações de capacidades
- Se a nova versão requer capacidades adicionais, você verá uma diferença e precisará aprovar
- Confirme para atualizar
Desinstalação
- Vá para Plugins no painel de administração
- Clique no plugin do marketplace que você deseja remover
- Clique em Desinstalar
- Escolha se deseja manter ou excluir os dados armazenados do plugin
- Confirme
O código sandbox do plugin é removido do seu bucket R2 e ele para de executar imediatamente.
Da Configuração
Plugins nativos — seu próprio código ou pacotes instalados via npm — são adicionados diretamente à configuração Astro. O exemplo a seguir registra o 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 }),
],
}),
],
});
Plugins nativos:
- Executam em processo (não em sandbox)
- Têm acesso completo às APIs do Node.js
- São carregados em tempo de compilação e a cada início do servidor
- Não podem ser instalados ou removidos da interface de administração
Marketplace vs. configuração — quando usar qual
| Marketplace (sandbox) | Configuração (nativo ou em processo em sandbox) | |
|---|---|---|
| Método de instalação | Um clique na interface de administração | Alteração de código + npm install + deploy |
| Execução | Runtime sandbox através do runner configurado | Em processo (ou em sandbox se listado sob sandboxed: [] e um runner está disponível) |
| Capacidades | Aplicadas pela ponte sandbox — controle ctx.* mais isolamento de runtime | Apenas controle ctx.* (plugins em processo podem contornar via fetch() direto, env, imports) |
| APIs Node.js | Não disponíveis | Acesso completo (apenas em processo) |
| Páginas de administração React | Não (Block Kit em vez disso) | Sim (plugins nativos) |
| Componentes de renderização PT | Não | Sim (plugins nativos) |
| Atualizações | Um clique na administração | Incremento de versão + deploy |
| Melhor para | A maioria dos plugins | Plugins que precisam de integração em tempo de compilação |