Instalando Plugins

Nesta página

Plugins EmDash podem ser instalados de duas formas: do marketplace via o painel de administração, ou adicionados diretamente na sua configuração Astro. Plugins do marketplace sempre rodam em sandbox; plugins baseados em configuração rodam em sandbox ou in-process dependendo do array em que são declarados (sandboxed: [] vs plugins: []).

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:

  1. Runner de sandbox configurado — Plugins do marketplace rodam em um runtime isolado, que requer o runner de sandbox. 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",
        }),
      ],
    });

    No Cloudflare Workers, o sandboxing usa a API Dynamic Worker Loader (nenhuma configuração adicional necessária). No Node.js, instale o runner de sandbox workerd:

    npm install @emdash-cms/sandbox-workerd

    Em seguida, passe o runner explicitamente:

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

    Em desenvolvimento, instale miniflare como dependência de desenvolvimento para inicialização mais rápida do sandbox:

    npm install -D miniflare
  2. Acesso de administrador — Apenas administradores podem instalar ou remover plugins.

Explorar e Instalar

  1. Abra o painel de administração e navegue até Plugins > Marketplace
  2. Explore ou pesquise um plugin
  3. 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
  4. Clique em Instalar
  5. Revise o diálogo de consentimento de capacidades — isto mostra o que o plugin poderá acessar
  6. Confirme a instalação

O plugin será baixado, armazenado no bucket R2 do seu site e carregado no runner de sandbox. Está ativo imediatamente.

Consentimento de Capacidades

Antes da instalação, você verá um diálogo listando o que o plugin precisa acessar:

CapacidadeO que significa
content:readLer seu conteúdo
content:writeCriar, atualizar e excluir conteúdo
media:readAcessar sua biblioteca de mídia
media:writeCarregar e gerenciar mídia
network:requestFazer requisiçõ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 as descobertas)
  • Reprovado — Problemas de segurança significativos detectados

Você pode visualizar o relatório completo de auditoria na página de detalhes do plugin, incluindo descobertas individuais e sua severidade.

Atualizações

Quando uma versão mais recente de um plugin instalado está disponível:

  1. Vá para Plugins no painel de administração
  2. Plugins do marketplace mostram um badge Atualização disponível
  3. Clique em Atualizar para ver o changelog e quaisquer mudanças de capacidades
  4. Se a nova versão requer capacidades adicionais, você verá um diff e precisará aprovar
  5. Confirme para atualizar

Desinstalação

  1. Vá para Plugins no painel de administração
  2. Clique no plugin do marketplace que deseja remover
  3. Clique em Desinstalar
  4. Escolha se deseja manter ou excluir os dados armazenados do plugin
  5. Confirme

O código sandbox do plugin é removido do seu bucket R2 e 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:

  • Rodam in-process (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 de administração

Marketplace vs. configuração — quando usar qual

Marketplace (sandbox)Configuração (nativo ou sandbox in-process)
Método de instalaçãoUm clique na UI adminMudança de código + npm install + deploy
ExecuçãoRuntime sandbox via o runner configuradoIn-process (ou sandbox se listado em sandboxed: [] e um runner está disponível)
CapacidadesAplicadas pela ponte sandbox — gating ctx.* mais isolamento runtimeApenas gating ctx.* (plugins in-process podem contornar via fetch() direto, env, imports)
APIs Node.jsNão disponíveisAcesso completo (apenas in-process)
Páginas admin ReactNão (Block Kit em vez disso)Sim (plugins nativos)
Componentes de renderização PTNãoSim (plugins nativos)
AtualizaçõesUm clique no adminBump de versão + deploy
Melhor paraA maioria dos pluginsPlugins que precisam de integração no build