Aller au contenu

Référence CLI

L’interface en ligne de commande (CLI) EmDash fournit des commandes pour gérer une instance EmDash CMS — configuration de la base de données, génération de types, opérations CRUD sur le contenu, gestion des schémas, médias, et plus encore.

Le CLI est inclus dans le package emdash :

Fenêtre de terminal
npm install emdash

Exécutez les commandes avec npx emdash ou ajoutez des scripts dans package.json. Le binaire est également disponible sous le nom em pour plus de concision.

Les commandes qui communiquent avec une instance EmDash en cours d’exécution (tout sauf init, seed, export-seed et auth secret) résolvent l’authentification dans cet ordre :

  1. Drapeau --token — jeton explicite sur la ligne de commande
  2. Variable d’environnement EMDASH_TOKEN
  3. Identifiants stockés depuis ~/.config/emdash/auth.json (enregistrés par emdash login)
  4. Contournement pour le développement — si l’URL est localhost et qu’aucun jeton n’est disponible, s’authentifie automatiquement via le point de terminaison de contournement pour le développement

La plupart des commandes acceptent les drapeaux --url (par défaut http://localhost:4321) et --token. Lorsque vous ciblez un serveur de développement local, aucun jeton n’est nécessaire.

Ces drapeaux sont disponibles sur toutes les commandes distantes :

DrapeauAliasDescriptionPar défaut
--url-uURL de l’instance EmDashhttp://localhost:4321
--token-tJeton d’authentificationDepuis env/identifiants stockés
--jsonSortie au format JSON (pour les pipelines)Détecté automatiquement depuis le TTY

Lorsque la sortie standard (stdout) est un TTY, le CLI affiche les résultats de manière lisible avec consola. Lorsqu’elle est redirigée (piped) ou lorsque --json est défini, il produit du JSON brut sur la sortie standard — adapté pour jq ou d’autres outils.

Initialise la base de données avec le schéma de base et des données de modèle optionnelles.

Fenêtre de terminal
npx emdash init [options]
OptionAliasDescriptionPar défaut
--database-dChemin du fichier de base de données./data.db
--cwdRépertoire de travailRépertoire courant
--force-fRéexécuter le schéma et les données de départfalse
  1. Lit la configuration emdash dans package.json
  2. Crée le fichier de base de données si nécessaire
  3. Exécute les migrations de base (crée les tables système)
  4. Exécute le schema.sql du modèle si configuré
  5. Exécute le seed.sql du modèle si configuré

Démarre le serveur de développement avec configuration automatique de la base de données.

Fenêtre de terminal
npx emdash dev [options]
OptionAliasDescriptionPar défaut
--database-dChemin du fichier de base de données./data.db
--types-tGénérer les types depuis une instance distante avant de démarrerfalse
--port-pPort du serveur de développement4321
--cwdRépertoire de travailRépertoire courant
Fenêtre de terminal
# Start dev server
npx emdash dev
# Port personnalisé
npx emdash dev --port 3000
# Générer les types depuis une instance distante avant de démarrer
npx emdash dev --types
  1. Vérifie et exécute les migrations de base de données en attente
  2. Si --types est défini, génère les types TypeScript depuis une instance distante (URL depuis la variable d’environnement EMDASH_URL ou emdash.url dans package.json)
  3. Démarre le serveur de développement Astro avec EMDASH_DATABASE_URL défini

Génère les types TypeScript à partir du schéma d’une instance EmDash en cours d’exécution.

Fenêtre de terminal
npx emdash types [options]
OptionAliasDescriptionPar défaut
--url-uURL de l’instance EmDashhttp://localhost:4321
--token-tJeton d’authentificationDepuis env/identifiants stockés
--output-oChemin de sortie pour les types.emdash/types.ts
--cwdRépertoire de travailRépertoire courant
Fenêtre de terminal
# Generate types from local dev server
npx emdash types
# Générer depuis une instance distante
npx emdash types --url https://my-site.pages.dev
# Chemin de sortie personnalisé
npx emdash types --output src/types/emdash.ts
  1. Récupère le schéma depuis l’instance
  2. Génère les définitions de types TypeScript
  3. Écrit les types dans le fichier de sortie
  4. Écrit schema.json à côté pour référence

Se connecter à une instance EmDash en utilisant le flux d’appareil OAuth.

Fenêtre de terminal
npx emdash login [options]
OptionAliasDescriptionPar défaut
--url-uURL de l’instance EmDashhttp://localhost:4321
  1. Découvre les points de terminaison d’authentification depuis l’instance
  2. Si localhost et aucune authentification configurée, utilise automatiquement le contournement pour le développement
  3. Sinon, initie le flux d’appareil OAuth — affiche un code et ouvre votre navigateur
  4. Interroge pour l’autorisation, puis enregistre les identifiants dans ~/.config/emdash/auth.json

Les identifiants enregistrés sont utilisés automatiquement par toutes les commandes suivantes ciblant la même instance.

Se déconnecter et supprimer les identifiants stockés.

Fenêtre de terminal
npx emdash logout [options]
OptionAliasDescriptionPar défaut
--url-uURL de l’instance EmDashhttp://localhost:4321

Affiche l’utilisateur authentifié actuel.

Fenêtre de terminal
npx emdash whoami [options]
OptionAliasDescriptionPar défaut
--url-uURL de l’instance EmDashhttp://localhost:4321
--token-tJeton d’authentificationDepuis env/identifiants stockés
--jsonSortie au format JSON

Affiche l’e-mail, le nom, le rôle, la méthode d’authentification et l’URL de l’instance.

Gérer les éléments de contenu. Toutes les sous-commandes utilisent l’API distante via EmDashClient.

Fenêtre de terminal
npx emdash content list posts
npx emdash content list posts --status published --limit 10
OptionDescription
--statusFiltrer par statut
--limitNombre maximum d’éléments
--cursorCurseur de pagination
Fenêtre de terminal
npx emdash content get posts 01ABC123
npx emdash content get posts 01ABC123 --raw
OptionDescription
--rawRetourner le Portable Text brut (ignorer la conversion en markdown)

La réponse inclut un jeton _rev — transmettez-le à content update pour prouver que vous avez vu ce que vous écrasez.

Fenêtre de terminal
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
OptionDescription
--dataChaîne JSON avec les données de contenu
--fileLire les données depuis un fichier JSON
--stdinLire les données depuis stdin
--slugSlug du contenu
--statusStatut initial (brouillon, publié)

Fournissez les données via exactement une des options --data, --file, ou --stdin.

Comme un éditeur de fichier qui vous oblige à lire avant d’écrire — vous devez fournir le jeton _rev d’un get précédent pour prouver que vous avez vu l’état actuel. Cela évite d’écraser accidentellement des modifications que vous n’avez pas vues.

Fenêtre de terminal
# 1. Read the item, note the _rev
npx emdash content get posts 01ABC123
# 2. Mettre à jour avec le _rev de l'étape 1
npx emdash content update posts 01ABC123 \
--rev MToyMDI2LTAyLTE0... \
--data '{"title": "Updated"}'
OptionDescription
--revJeton de révision de get (requis)
--dataChaîne JSON avec les données de contenu
--fileLire les données depuis un fichier JSON

Si l’élément a changé depuis votre get, le serveur renvoie 409 Conflict — relisez et réessayez.

Fenêtre de terminal
npx emdash content delete posts 01ABC123

Supprime l’élément de contenu de manière réversible (le déplace vers la corbeille).

Fenêtre de terminal
npx emdash content publish posts 01ABC123
Fenêtre de terminal
npx emdash content unpublish posts 01ABC123
Fenêtre de terminal
npx emdash content schedule posts 01ABC123 --at 2026-03-01T09:00:00Z
OptionDescription
--atDate et heure ISO 8601 (requis)
Fenêtre de terminal
npx emdash content restore posts 01ABC123

Restaure un élément de contenu mis à la corbeille.

Gérer les collections et les champs.

Fenêtre de terminal
npx emdash schema list

Liste toutes les collections.

Fenêtre de terminal
npx emdash schema get posts

Affiche une collection avec tous ses champs.

Fenêtre de terminal
npx emdash schema create articles --label Articles
npx emdash schema create articles --label Articles --label-singular Article --description "Blog articles"
OptionDescription
--labelLibellé de la collection (requis)
--label-singularLibellé au singulier
--descriptionDescription de la collection
Fenêtre de terminal
npx emdash schema delete articles
npx emdash schema delete articles --force
OptionDescription
--forceIgnorer la confirmation

Demande une confirmation sauf si --force est défini.

Fenêtre de terminal
npx emdash schema add-field posts body --type portableText --label "Body Content"
npx emdash schema add-field posts featured --type boolean --required
OptionDescription
--typeType de champ : string, text, number, integer, boolean, datetime, image, reference, portableText, json (requis)
--labelLibellé du champ (par défaut le slug du champ)
--requiredIndique si le champ est obligatoire
Fenêtre de terminal
npx emdash schema remove-field posts featured

Gérer les éléments multimédias.

Fenêtre de terminal
npx emdash media list
npx emdash media list --mime image/png --limit 20
OptionDescription
--mimeFiltrer par type MIME
--limitNombre d’éléments
--cursorCurseur de pagination
Fenêtre de terminal
npx emdash media upload ./photo.jpg
npx emdash media upload ./photo.jpg --alt "A sunset" --caption "Taken in Bristol"
OptionDescription
--altTexte alternatif
--captionTexte de légende
Fenêtre de terminal
npx emdash media get 01MEDIA123
Fenêtre de terminal
npx emdash media delete 01MEDIA123

Recherche en texte intégral dans le contenu.

Fenêtre de terminal
npx emdash search "hello world"
npx emdash search "hello" --collection posts --limit 5
OptionAliasDescription
--collection-cFiltrer par collection
--limit-lRésultats maximum

Gérer les taxonomies et les termes.

Fenêtre de terminal
npx emdash taxonomy list
Fenêtre de terminal
npx emdash taxonomy terms categories
npx emdash taxonomy terms tags --limit 50
OptionAliasDescription
--limit-lTermes maximum
--cursorCurseur de pagination
Fenêtre de terminal
npx emdash taxonomy add-term categories --name "Tech" --slug tech
npx emdash taxonomy add-term categories --name "Frontend" --parent 01PARENT123
OptionDescription
--nameLibellé du terme (requis)
--slugSlug du terme (par défaut le nom transformé en slug)
--parentID du terme parent (pour les taxonomies hiérarchiques)

Gérer les menus de navigation.

Fenêtre de terminal
npx emdash menu list
Fenêtre de terminal
npx emdash menu get primary

Renvoie le menu avec tous ses éléments.

Appliquer un fichier de seed à la base de données. Cette commande fonctionne directement sur un fichier SQLite local (aucun serveur en cours d’exécution n’est nécessaire).

Fenêtre de terminal
npx emdash seed [path] [options]
ArgumentDescriptionPar défaut
pathChemin du fichier seed.emdash/seed.json
OptionAliasDescriptionDefault
--database-dChemin du fichier de base de données./data.db
--cwdRépertoire de travailRépertoire courant
--validateValider uniquement, ne pas appliquerfalse
--no-contentIgnorer le contenu d’exemplefalse
--on-conflictGestion des conflits : skip, update, errorskip
--uploads-dirRépertoire pour les téléchargements de médias.emdash/uploads
--media-base-urlURL de base pour les fichiers multimédias/_emdash/api/media/file
--base-urlURL de base du site (pour les URL absolues des médias)

La commande recherche les fichiers de graines dans cet ordre :

  1. Argument positionnel (si fourni)
  2. .emdash/seed.json (convention)
  3. Chemin depuis le champ emdash.seed du package.json

Exporter le schéma et le contenu de la base de données sous forme de fichier de graines. Fonctionne directement sur un fichier SQLite local.

Fenêtre de terminal
npx emdash export-seed [options] > seed.json
OptionAliasDescriptionDefault
--database-dChemin du fichier de base de données./data.db
--cwdRépertoire de travailRépertoire courant
--with-contentInclure le contenu (tout ou collections séparées par des virgules)
--no-prettyDésactiver le formatage JSONfalse

Le fichier de graines exporté inclut :

  • Paramètres : Titre du site, slogan, liens sociaux
  • Collections : Toutes les définitions de collections avec leurs champs
  • Taxonomies : Définitions des taxonomies et termes
  • Menus : Menus de navigation avec leurs éléments
  • Zones de Widgets : Zones de widgets et widgets
  • Contenu (si demandé) : Entrées avec références $media et syntaxe $ref: pour la portabilité

Générer un secret d’authentification sécurisé pour votre déploiement.

Fenêtre de terminal
npx emdash auth secret

Produit un secret aléatoire adapté à EMDASH_AUTH_SECRET.

Interfaces TypeScript générées par 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;
}

Export brut du schéma pour les outils :

{
"version": "a1b2c3d4",
"collections": [
{
"slug": "posts",
"label": "Posts",
"fields": [...]
}
]
}
VariableDescription
EMDASH_DATABASE_URLURL de la base de données (définie automatiquement par dev)
EMDASH_TOKENJeton d’authentification pour les opérations à distance
EMDASH_URLURL distante par défaut pour types et dev --types
EMDASH_AUTH_SECRETSecret pour l’authentification par clé d’accès
EMDASH_PREVIEW_SECRETSecret pour la génération de jetons de prévisualisation
{
"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"
}
}
CodeDescription
0Succès
1Erreur (configuration, réseau, base de données)