Os administradores podem instalar plugins em sandbox a partir do registro de plugins ou registrar pacotes npm em astro.config.mjs. Os plugins baseados em configuração podem ser executados no sandbox ou no processo do site.
Preparar-se para instalações pelo admin
As instalações pelo registro exigem:
- Uma conta de administrador com a permissão
plugins:manage. - Armazenamento configurado para os pacotes de plugins baixados.
- Um runner de sandbox disponível.
No Cloudflare Workers, use 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(),
}),
],
});
O runner da Cloudflare usa o Worker Loader para criar um Worker separado para cada plugin. Ele exige o plano Workers Paid e um binding worker_loaders chamado LOADER. Os plugins em sandbox acessam as APIs de conteúdo, mídia, armazenamento, rede e e-mail por meio do PluginBridge, então o ponto de entrada do Worker do site precisa exportar essa classe.
Os templates *-cloudflare exportam PluginBridge, mas deixam o binding do Worker Loader comentado, para que novos projetos possam ser implantados no plano gratuito do Workers. Habilite os plugins em sandbox durante a geração do projeto ou siga a configuração do sandbox da Cloudflare para adicionar o binding depois. O helper sandbox() lê a configuração efetiva do Wrangler em tempo de build. Sem LOADER, a navegação pelo registro continua disponível, mas os plugins em sandbox gerenciados pela configuração não são carregados, e as requisições de instalação ou atualização retornam SANDBOX_NOT_AVAILABLE.
No Node.js, instale o runner e sua dependência peer workerd:
npm install @emdash-cms/sandbox-workerd workerd
O processo workerd executa o código do plugin separadamente do servidor Node.js. Selecione o runner na integração do EmDash:
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
export default defineConfig({
integrations: [
emdash({
sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox",
}),
],
});
Consulte Configurar o sandbox de plugins para a configuração de desenvolvimento, os requisitos de runtime, os limites de recursos e os erros de runner indisponível nas duas plataformas.
Instalar a partir do registro
- Abra Registry no painel de administração.
- Pesquise um plugin e abra sua página de detalhes.
- Selecione uma versão e revise seu publicador, metadados, permissões solicitadas e status de verificação.
- Selecione Install.
- Revise no diálogo de consentimento os identificadores da versão verificada e as permissões, e então confirme.
O EmDash verifica os registros assinados atuais do publicador e confere o pacote baixado antes de carregá-lo pelo runner de sandbox. O plugin aparece em Plugins, onde você pode desativá-lo ou configurá-lo. Consulte O registro de plugins para o modelo completo de verificação e confiança.
Revisar permissões
O diálogo de consentimento mostra todas as permissões declaradas pelo plugin. As permissões comuns incluem:
| Permissão | Acesso concedido |
|---|---|
content:read | Ler o conteúdo do site |
content:write | Criar, atualizar e excluir conteúdo |
content:revisions:read | Ler o histórico de revisões de conteúdo mantido |
schema:read | Ler as definições de coleções e campos |
bylines:read | Ler os perfis públicos de autoria e os créditos do conteúdo |
redirects:read | Ler as regras de redirecionamento |
redirects:write | Alterar para onde os visitantes são enviados |
media:read | Ler os metadados seguros de mídias prontas |
media:bytes:read | Ler o conteúdo dos arquivos e o hash de conteúdo de mídias prontas |
media:metadata:write | Alterar texto alternativo, legendas e pontos focais de mídias |
media:write | Enviar, substituir e excluir mídias |
network:request | Enviar requisições à lista de hosts permitidos do plugin |
O diálogo também identifica as rotas do plugin expostas como ferramentas do Model Context Protocol (MCP) quando um plugin as declara. Consulte Capabilities e segurança para o modelo completo de permissões.
Atualizar um plugin
- Abra Plugins no painel de administração.
- Selecione Check for updates.
- Selecione Update em um plugin do registro com uma versão disponível.
- Revise o diálogo de consentimento e então confirme a atualização.
As atualizações do registro exigem outra confirmação quando adicionam permissões ou ferramentas MCP, ou quando uma rota passa de autenticada para pública. O EmDash mantém a versão instalada até que você aprove a mudança.
As atualizações explícitas só avançam. As atualizações que acompanham a versão mais recente do registro podem ser revertidas se o publicador retirar a versão mais nova. Para voltar a uma versão mais antiga em qualquer outro momento, desinstale o plugin e instale essa versão a partir da página dele no registro. Desinstalar mantém os dados armazenados do plugin, a menos que você escolha excluí-los.
Desinstalar um plugin
- Abra Plugins no painel de administração e expanda o plugin instalado.
- Selecione Uninstall.
- Selecione Also delete plugin storage data somente se você não precisar dos dados armazenados do plugin para uma reinstalação posterior.
- Confirme a desinstalação.
O EmDash remove o pacote instalado e deixa de carregar o plugin. Os dados de armazenamento do plugin permanecem por padrão.
Instalar a partir do npm
Os plugins nativos e os plugins em sandbox gerenciados pela configuração são instalados como dependências npm. Siga as instruções do pacote para escolher plugins: [] ou sandboxed: [].
O exemplo a seguir registra o 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()],
}),
],
});
Os plugins gerenciados pela configuração mudam quando você atualiza a dependência npm e implanta o site. Eles não podem ser instalados nem removidos pelo painel de administração.
Escolher um método de instalação
| Registro | npm com sandboxed: [] | npm com plugins: [] | |
|---|---|---|---|
| Instalação e atualização | Painel de administração | Mudança de dependência e implantação | Mudança de dependência e implantação |
| Execução | Runner de sandbox configurado | Runner de sandbox configurado | Processo do site |
| Acesso ao EmDash | Somente as APIs de plugin declaradas | Somente as APIs de plugin declaradas | APIs de plugin declaradas mais acesso direto ao processo |
APIs do Node.js e fetch() direto | Indisponível | Indisponível | Disponível |
| Componentes de administração em React | Indisponível | Indisponível | Disponível |
| Renderizadores de Portable Text | Indisponível | Indisponível | Disponível |
Use um plugin nativo quando ele precisar de componentes de administração em React, renderizadores de Portable Text, fragmentos de página ou acesso direto ao processo do site. Use um plugin em sandbox quando ele puder funcionar por meio das APIs de plugin declaradas.