Os plugins EmDash podem ser instalados de duas maneiras: do marketplace através do painel de administração, ou adicionados diretamente em sua configuração Astro. Plugins do marketplace executam em um sandbox isolado; plugins baseados em configuração executam em processo.
Do marketplace
O painel de administração inclui um navegador de marketplace onde você pode pesquisar, instalar e gerenciar plugins.
Pré-requisitos
Para instalar plugins do marketplace, seu site precisa de:
-
Executor de sandbox configurado — Plugins do marketplace executam em workers V8 isolados, o que requer o runtime de sandbox:
import { emdash } from "emdash/astro"; export default defineConfig({ integrations: [ emdash({ marketplace: "https://marketplace.emdashcms.com", sandboxRunner: true, }), ], }); -
Acesso admin — Apenas administradores podem instalar ou remover plugins.
Navegar e instalar
- Abra o painel admin e navegue para Plugins > Marketplace
- Navegue ou pesquise por um plugin
- Clique no cartão 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 executor de sandbox. Está ativo imediatamente.
Consentimento de capacidades
Antes da instalação, você verá um diálogo listando o que o plugin precisa acessar:
| Capacidade | Significado |
|---|---|
read:content | Ler seu conteúdo |
write:content | Criar, atualizar e excluir conteúdo |
read:media | Acessar sua biblioteca de mídia |
write:media | Upload e gerenciar mídia |
network:fetch | 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 cartão do plugin:
- Aprovado — Nenhum problema encontrado
- Aviso — Preocupações menores sinalizadas (revise os achados)
- Reprovado — 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 admin
- Plugins do marketplace mostram um badge Atualização disponível
- Clique em Atualizar para ver o changelog e quaisquer mudanças de capacidade
- Se a nova versão requer capacidades adicionais, você verá um diff e precisará aprovar
- Confirme para atualizar
Desinstalar
- Vá para Plugins no painel admin
- Clique no plugin do marketplace que você deseja remover
- Clique em Desinstalar
- Escolha se quer manter ou excluir os dados armazenados do plugin
- Confirme
O código sandbox do plugin é removido do seu bucket R2 e para de executar imediatamente.
Da configuração
Para plugins nativos (seu próprio código, ou pacotes instalados via npm), adicione-os diretamente à sua config Astro:
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 Node.js
- São carregados no momento do build e em cada inicialização do servidor
- Não podem ser instalados ou removidos da UI admin
Marketplace vs Configuração: Quando usar qual
| Marketplace (sandboxed) | Configuração (nativo) | |
|---|---|---|
| Método de instalação | Um clique na UI admin | Mudança de código + npm install + deploy |
| Execução | Isolate V8 isolado | Em processo |
| Capacidades | Aplicadas em tempo de execução | Apenas consultivas |
| APIs Node.js | Não disponível | Acesso completo |
| Páginas admin React | Não (Block Kit em vez disso) | Sim |
| Componentes de renderização PT | Não | Sim |
| Atualizações | Um clique no admin | Bump de versão + deploy |
| Melhor para | A maioria dos plugins | Plugins que precisam de integração no build |