Pular para o conteúdo

Referência da CLI

A CLI do EmDash fornece comandos para gerenciar uma instância do EmDash CMS — configuração do banco de dados, geração de tipos, CRUD de conteúdo, gerenciamento de esquema, mídia e mais.

A CLI está incluída no pacote emdash:

Terminal window
npm install emdash

Execute comandos com npx emdash ou adicione scripts ao package.json. O binário também está disponível como em para brevidade.

Comandos que se comunicam com uma instância do EmDash em execução (tudo exceto init, seed, export-seed e auth secret) resolvem a autenticação nesta ordem:

  1. Flag --token — token explícito na linha de comando
  2. Variável de ambiente EMDASH_TOKEN
  3. Credenciais armazenadas de ~/.config/emdash/auth.json (salvas por emdash login)
  4. Desvio de desenvolvimento — se a URL for localhost e nenhum token estiver disponível, autentica automaticamente via endpoint de desvio de desenvolvimento

A maioria dos comandos aceita as flags --url (padrão http://localhost:4321) e --token. Ao direcionar para um servidor de desenvolvimento local, nenhum token é necessário.

Estas flags estão disponíveis em todos os comandos remotos:

FlagAliasDescriçãoPadrão
--url-uURL da instância do EmDashhttp://localhost:4321
--token-tToken de autenticaçãoDas credenciais de ambiente/armazenadas
--jsonSaída como JSON (para pipe)Detectado automaticamente do TTY

Quando a stdout é um TTY, a CLI imprime os resultados de forma formatada com consola. Quando redirecionada por pipe ou quando --json está definido, ela emite JSON bruto para stdout — adequado para jq ou outras ferramentas.

Inicializa o banco de dados com o esquema principal e dados de template opcionais.

Terminal window
npx emdash init [options]
OpçãoAliasDescriçãoPadrão
--database-dCaminho do arquivo do banco de dados./data.db
--cwdDiretório de trabalhoDiretório atual
--force-fReexecutar esquema e seedfalse
  1. Lê a configuração emdash de package.json
  2. Cria o arquivo do banco de dados se necessário
  3. Executa migrações principais (cria tabelas do sistema)
  4. Executa schema.sql do template se configurado
  5. Executa seed.sql do template se configurado

Inicia o servidor de desenvolvimento com configuração automática do banco de dados.

Terminal window
npx emdash dev [options]
OpçãoAliasDescriçãoPadrão
--database-dCaminho do arquivo do banco de dados./data.db
--types-tGerar tipos do remoto antes de iniciarfalse
--port-pPorta do servidor de desenvolvimento4321
--cwdDiretório de trabalhoDiretório atual
Terminal window
# Start dev server
npx emdash dev
# Porta personalizada
npx emdash dev --port 3000
# Gerar tipos do remoto antes de iniciar
npx emdash dev --types
  1. Verifica e executa migrações pendentes do banco de dados
  2. Se --types estiver definido, gera tipos TypeScript de uma instância remota (URL da variável de ambiente EMDASH_URL ou emdash.url em package.json)
  3. Inicia o servidor de desenvolvimento Astro com EMDASH_DATABASE_URL definido

Gera tipos TypeScript a partir do esquema de uma instância do EmDash em execução.

Terminal window
npx emdash types [options]
OpçãoAliasDescriçãoPadrão
--url-uURL da instância do EmDashhttp://localhost:4321
--token-tToken de autenticaçãoDas credenciais de ambiente/armazenadas
--output-oCaminho de saída para os tipos.emdash/types.ts
--cwdDiretório de trabalhoDiretório atual
Terminal window
# Generate types from local dev server
npx emdash types
# Gerar de uma instância remota
npx emdash types --url https://my-site.pages.dev
# Caminho de saída personalizado
npx emdash types --output src/types/emdash.ts
  1. Busca o esquema da instância
  2. Gera definições de tipos TypeScript
  3. Escreve os tipos no arquivo de saída
  4. Escreve schema.json ao lado para referência

Faz login em uma instância do EmDash usando o Fluxo de Dispositivo OAuth.

Terminal window
npx emdash login [options]
OpçãoAliasDescriçãoPadrão
--url-uURL da instância do EmDashhttp://localhost:4321
  1. Descobre endpoints de autenticação da instância
  2. Se for localhost e nenhuma autenticação estiver configurada, usa o desvio de desenvolvimento automaticamente
  3. Caso contrário, inicia o Fluxo de Dispositivo OAuth — exibe um código e abre seu navegador
  4. Sondagem para autorização, então salva as credenciais em ~/.config/emdash/auth.json

Credenciais salvas são usadas automaticamente por todos os comandos subsequentes direcionados à mesma instância.

Faz logout e remove credenciais armazenadas.

Terminal window
npx emdash logout [options]
OpçãoAliasDescriçãoPadrão
--url-uURL da instância do EmDashhttp://localhost:4321

Mostra o usuário autenticado atual.

Terminal window
npx emdash whoami [options]
OpçãoAliasDescriçãoPadrão
--url-uURL da instância do EmDashhttp://localhost:4321
--token-tToken de autenticaçãoDas credenciais de ambiente/armazenadas
--jsonSaída como JSON

Exibe e-mail, nome, função, método de autenticação e URL da instância.

Gerencia itens de conteúdo. Todos os subcomandos usam a API remota via EmDashClient.

Terminal window
npx emdash content list posts
npx emdash content list posts --status published --limit 10
OpçãoDescrição
--statusFiltrar por status
--limitItens máximos
--cursorCursor de paginação
Terminal window
npx emdash content get posts 01ABC123
npx emdash content get posts 01ABC123 --raw
OpçãoDescrição
--rawRetorna Portable Text bruto (ignora conversão para markdown)

A resposta inclui um token _rev — passe-o para content update para provar que você viu o que está sobrescrevendo.

Terminal window
npx emdash content create posts --data '{"title": "Hello"}'
npx emdash content create posts --file post.json --slug hello-world
cat post.json | npx emdash content create posts --stdin
OpçãoDescrição
--dataString JSON com dados do conteúdo
--fileLê dados de um arquivo JSON
--stdinLê dados do stdin
--slugSlug do conteúdo
--statusStatus inicial (rascunho, publicado)

Forneça dados através de exatamente uma das opções: --data, --file ou --stdin.

Como um editor de arquivos que exige que você leia antes de escrever — você deve fornecer o token _rev de um get anterior para provar que viu o estado atual. Isso evita sobrescrever acidentalmente alterações que você não viu.

Terminal window
# 1. Read the item, note the _rev
npx emdash content get posts 01ABC123
# 2. Atualize com o _rev da etapa 1
npx emdash content update posts 01ABC123 \
--rev MToyMDI2LTAyLTE0... \
--data '{"title": "Updated"}'
OpçãoDescrição
--revToken de revisão do get (obrigatório)
--dataString JSON com dados do conteúdo
--fileLê dados de um arquivo JSON

Se o item mudou desde o seu get, o servidor retorna 409 Conflito — releia e tente novamente.

Terminal window
npx emdash content delete posts 01ABC123

Exclui suavemente o item de conteúdo (move para a lixeira).

Terminal window
npx emdash content publish posts 01ABC123
Terminal window
npx emdash content unpublish posts 01ABC123
Terminal window
npx emdash content schedule posts 01ABC123 --at 2026-03-01T09:00:00Z
OpçãoDescrição
--atData e hora ISO 8601 (obrigatório)
Terminal window
npx emdash content restore posts 01ABC123

Restaura um item de conteúdo da lixeira.

Gerencia coleções e campos.

Terminal window
npx emdash schema list

Lista todas as coleções.

Terminal window
npx emdash schema get posts

Mostra uma coleção com todos os seus campos.

Terminal window
npx emdash schema create articles --label Articles
npx emdash schema create articles --label Articles --label-singular Article --description "Blog articles"
OpçãoDescrição
--labelRótulo da coleção (obrigatório)
--label-singularRótulo no singular
--descriptionDescrição da coleção
Terminal window
npx emdash schema delete articles
npx emdash schema delete articles --force
OpçãoDescrição
--forceIgnora confirmação

Solicita confirmação, a menos que --force seja definido.

Terminal window
npx emdash schema add-field posts body --type portableText --label "Body Content"
npx emdash schema add-field posts featured --type boolean --required
OpçãoDescrição
--typeTipo do campo: string, text, number, integer, boolean, datetime, image, reference, portableText, json (obrigatório)
--labelRótulo do campo (padrão é o slug do campo)
--requiredSe o campo é obrigatório
Terminal window
npx emdash schema remove-field posts featured

Gerencia itens de mídia.

Terminal window
npx emdash media list
npx emdash media list --mime image/png --limit 20
OpçãoDescrição
--mimeFiltrar por tipo MIME
--limitNúmero de itens
--cursorCursor de paginação
Terminal window
npx emdash media upload ./photo.jpg
npx emdash media upload ./photo.jpg --alt "A sunset" --caption "Taken in Bristol"
OpçãoDescrição
--altTexto alternativo
--captionTexto da legenda
Terminal window
npx emdash media get 01MEDIA123
Terminal window
npx emdash media delete 01MEDIA123

Busca de texto completo em todo o conteúdo.

Terminal window
npx emdash search "hello world"
npx emdash search "hello" --collection posts --limit 5
OpçãoAliasDescrição
--collection-cFiltrar por coleção
--limit-lMáximo de resultados

Gerencia taxonomias e termos.

Terminal window
npx emdash taxonomy list
Terminal window
npx emdash taxonomy terms categories
npx emdash taxonomy terms tags --limit 50
OpçãoAliasDescrição
--limit-lMáximo de termos
--cursorCursor de paginação
Terminal window
npx emdash taxonomy add-term categories --name "Tech" --slug tech
npx emdash taxonomy add-term categories --name "Frontend" --parent 01PARENT123
OpçãoDescrição
--nameRótulo do termo (obrigatório)
--slugSlug do termo (padrão é o nome convertido em slug)
--parentID do termo pai (para taxonomias hierárquicas)

Gerencia menus de navegação.

Terminal window
npx emdash menu list
Terminal window
npx emdash menu get primary

Retorna o menu com todos os seus itens.

Aplica um arquivo de seed ao banco de dados. Este comando funciona diretamente em um arquivo SQLite local (não é necessário um servidor em execução).

Terminal window
npx emdash seed [path] [options]
ArgumentoDescriçãoPadrão
pathCaminho para o arquivo seed.emdash/seed.json
OpçãoAliasDescriçãoPadrão
--database-dCaminho do arquivo de banco de dados./data.db
--cwdDiretório de trabalhoDiretório atual
--validateApenas validar, não aplicarfalse
--no-contentPular conteúdo de exemplofalse
--on-conflictTratamento de conflito: skip, update, errorskip
--uploads-dirDiretório para uploads de mídia.emdash/uploads
--media-base-urlURL base para arquivos de mídia/_emdash/api/media/file
--base-urlURL base do site (para URLs absolutas de mídia)

O comando procura por arquivos de seed nesta ordem:

  1. Argumento posicional (se fornecido)
  2. .emdash/seed.json (convenção)
  3. Caminho do campo emdash.seed no package.json

Exporta o esquema e conteúdo do banco de dados como um arquivo de seed. Funciona diretamente em um arquivo SQLite local.

Terminal window
npx emdash export-seed [options] > seed.json
OpçãoAliasDescriçãoPadrão
--database-dCaminho do arquivo de banco de dados./data.db
--cwdDiretório de trabalhoDiretório atual
--with-contentIncluir conteúdo (tudo ou coleções separadas por vírgula)
--no-prettyDesabilitar formatação JSONfalse

O arquivo de seed exportado inclui:

  • Configurações: Título do site, slogan, links sociais
  • Coleções: Todas as definições de coleção com campos
  • Taxonomias: Definições de taxonomia e termos
  • Menus: Menus de navegação com itens
  • Áreas de Widgets: Áreas de widgets e widgets
  • Conteúdo (se solicitado): Entradas com referências $media e sintaxe $ref: para portabilidade

Gera um segredo de autenticação seguro para sua implantação.

Terminal window
npx emdash auth secret

Gera um segredo aleatório adequado para EMDASH_AUTH_SECRET.

Interfaces TypeScript geradas por emdash types:

// Generated by EmDash CLI
// Do not edit manually - run `emdash types` to regenerate
import type { PortableTextBlock } from "emdash";
export interface Post {
id: string;
title: string;
content: PortableTextBlock[];
publishedAt: Date | null;
}

Exportação de esquema bruto para ferramentas:

{
"version": "a1b2c3d4",
"collections": [
{
"slug": "posts",
"label": "Posts",
"fields": [...]
}
]
}
VariávelDescrição
EMDASH_DATABASE_URLURL do banco de dados (definida automaticamente por dev)
EMDASH_TOKENToken de autenticação para operações remotas
EMDASH_URLURL remota padrão para types e dev --types
EMDASH_AUTH_SECRETSegredo para autenticação por passkey
EMDASH_PREVIEW_SECRETSegredo para geração de token de pré-visualização
{
"scripts": {
"dev": "emdash dev",
"init": "emdash init",
"types": "emdash types",
"seed": "emdash seed",
"export-seed": "emdash export-seed",
"db:reset": "rm -f data.db && emdash init"
}
}
CódigoDescrição
0Sucesso
1Erro (configuração, rede, banco de dados)