CLIリファレンス

このページ

EmDash CLIは、EmDash CMSインスタンスを管理するためのコマンドを提供します — データベースセットアップ、型生成、コンテンツCRUD、スキーマ管理、メディアなど。

インストール

CLIはemdashパッケージに含まれています。次のコマンドでインストールしてください:

npm install emdash

npx emdashでコマンドを実行するか、package.jsonにスクリプトを追加してください。バイナリは簡潔さのためにemとしても利用できます。

認証

実行中のEmDashインスタンスと通信するコマンドは、次の順序で認証を解決します:

  1. --tokenフラグ — コマンドライン上の明示的なトークン
  2. EMDASH_TOKEN環境変数
  3. 保存された認証情報 ~/.config/emdash/auth.jsonから(emdash loginで保存)
  4. 開発バイパス — URLがlocalhostでトークンが利用できない場合、開発バイパスエンドポイント経由で自動的に認証

ほとんどのコマンドは--url(デフォルトhttp://localhost:4321)と--tokenフラグを受け入れます。ローカル開発サーバーをターゲットにする場合、トークンは不要です。

共通フラグ

これらのフラグはすべてのリモートコマンドで利用できます:

フラグエイリアス説明デフォルト
--url-uEmDashインスタンスURLhttp://localhost:4321
--token-t認証トークン環境変数/保存された認証情報から
--jsonJSON形式で出力(パイピング用)TTYから自動検出

出力

stdoutがTTYの場合、CLIはconsolaで結果を整形して出力します。パイプされている場合、または--jsonが設定されている場合、stdoutに生のJSONを出力します — jqや他のツールに適しています。

コマンド

emdash dev

自動データベースセットアップで開発サーバーを起動します。

npx emdash dev [options]

オプション

オプションエイリアス説明デフォルト
--database-dデータベースファイルパス./data.db
--types-t起動前にリモートから型を生成false
--port-p開発サーバーポート4321
--cwd作業ディレクトリ現在のディレクトリ

# 開発サーバーを起動
npx emdash dev

# カスタムポート
npx emdash dev --port 3000

# 起動前にリモートから型を生成
npx emdash dev --types

動作

  1. 保留中のデータベースマイグレーションをチェックして実行
  2. --typesが設定されている場合、リモートインスタンスからTypeScript型を生成(URLはEMDASH_URL環境変数またはpackage.jsonemdash.urlから)
  3. EMDASH_DATABASE_URLを設定してAstro開発サーバーを起動

emdash types

実行中のEmDashインスタンスのスキーマからTypeScript型を生成します。

npx emdash types [options]

オプション

オプションエイリアス説明デフォルト
--url-uEmDashインスタンスURLhttp://localhost:4321
--token-t認証トークン環境変数/保存された認証情報から
--output-o型の出力パス.emdash/types.ts
--cwd作業ディレクトリ現在のディレクトリ

# ローカル開発サーバーから型を生成
npx emdash types

# リモートインスタンスから生成
npx emdash types --url https://my-site.pages.dev

# カスタム出力パス
npx emdash types --output src/types/emdash.ts

動作

  1. インスタンスからスキーマを取得
  2. TypeScript型定義を生成
  3. 出力ファイルに型を書き込み
  4. 参照用にschema.jsonを並べて書き込み

emdash login

OAuth Device Flowを使用してEmDashインスタンスにログインします。

npx emdash login [options]

オプション

オプションエイリアス説明デフォルト
--url-uEmDashインスタンスURLhttp://localhost:4321

動作

  1. インスタンスから認証エンドポイントを検出
  2. localhostで認証が設定されていない場合、自動的に開発バイパスを使用
  3. それ以外の場合はOAuth Device Flowを開始 — コードを表示してブラウザを開く
  4. 認証をポーリングし、~/.config/emdash/auth.jsonに認証情報を保存

保存された認証情報は、同じインスタンスをターゲットとするすべての後続コマンドで自動的に使用されます。

emdash logout

ログアウトして保存された認証情報を削除します。

npx emdash logout [options]

オプション

オプションエイリアス説明デフォルト
--url-uEmDashインスタンスURLhttp://localhost:4321

emdash whoami

現在認証されているユーザーを表示します。

npx emdash whoami [options]

オプション

オプションエイリアス説明デフォルト
--url-uEmDashインスタンスURLhttp://localhost:4321
--token-t認証トークン環境変数/保存された認証情報から
--jsonJSON形式で出力

メール、名前、ロール、認証方法、インスタンスURLを表示します。

emdash content

コンテンツアイテムを管理します。すべてのサブコマンドはEmDashClient経由でリモートAPIを使用します。

content list <collection>

npx emdash content list posts
npx emdash content list posts --status published --limit 10
オプション説明
--statusステータスでフィルタ
--limit最大アイテム数
--cursorページネーションカーソル

content get <collection> <id>

npx emdash content get posts 01ABC123
npx emdash content get posts 01ABC123 --raw
オプション説明
--raw生のPortable Textを返す(markdown変換をスキップ)

レスポンスには_revトークンが含まれます。content updateに渡して、上書きする前に現在の状態を見たことを確認してください。

content create <collection>

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
オプション説明
--dataコンテンツデータを含むJSON文字列
--fileJSONファイルからデータを読み込む
--stdinstdinからデータを読み込む
--slugコンテンツスラッグ
--localeコンテンツロケール
--translation-ofこれを翻訳としてリンクするコンテンツアイテムのID
--draft自動公開せずに下書きとして保持

--data--file--stdinのいずれか1つを使用してデータを提供してください。新しいアイテムは--draftが設定されていない限り自動的に公開されます。

content update <collection> <id>

現在の状態を見たことを証明するために、以前のgetからの_revトークンを提供する必要があります。これにより、見ていない変更を上書きすることを防ぎます。次の手順でアイテムを読み取り、そのトークンで更新します:

# 1. アイテムを読み取り、_revをメモ
npx emdash content get posts 01ABC123

# 2. ステップ1の_revで更新
npx emdash content update posts 01ABC123 \
  --rev MToyMDI2LTAyLTE0... \
  --data '{"title": "Updated"}'
オプション説明
--revgetからのリビジョントークン(必須)
--dataコンテンツデータを含むJSON文字列
--fileJSONファイルからデータを読み込む

get以降にアイテムが変更されている場合、サーバーは409 Conflictを返します — 再度読み取ってもう一度試してください。

content delete <collection> <id>

npx emdash content delete posts 01ABC123

コンテンツアイテムをソフト削除します(ゴミ箱に移動)。

content publish <collection> <id>

npx emdash content publish posts 01ABC123

content unpublish <collection> <id>

npx emdash content unpublish posts 01ABC123

content schedule <collection> <id>

npx emdash content schedule posts 01ABC123 --at 2026-03-01T09:00:00Z
オプション説明
--atISO 8601日時(必須)

content restore <collection> <id>

npx emdash content restore posts 01ABC123

ゴミ箱に入れられたコンテンツアイテムを復元します。

emdash schema

コレクションとフィールドを管理します。

schema list

npx emdash schema list

すべてのコレクションをリストします。

schema get <collection>

npx emdash schema get posts

すべてのフィールドを含むコレクションを表示します。

schema create <collection>

npx emdash schema create articles --label Articles
npx emdash schema create articles --label Articles --label-singular Article --description "Blog articles"
オプション説明
--labelコレクションラベル(必須)
--label-singular単数形ラベル
--descriptionコレクション説明

schema delete <collection>

npx emdash schema delete articles
npx emdash schema delete articles --force
オプション説明
--force確認をスキップ

--forceが設定されていない限り、確認を求めます。

schema add-field <collection> <field>

npx emdash schema add-field posts body --type portableText --label "Body Content"
npx emdash schema add-field posts featured --type boolean --required
オプション説明
--typeフィールドタイプ:string, text, number, integer, boolean, datetime, image, reference, portableText, json(必須)
--labelフィールドラベル(デフォルトはフィールドスラッグ)
--requiredフィールドが必須かどうか

schema remove-field <collection> <field>

npx emdash schema remove-field posts featured

emdash media

メディアアイテムを管理します。

media list

npx emdash media list
npx emdash media list --mime image/png --limit 20
オプション説明
--mimeMIMEタイプでフィルタ
--limitアイテム数
--cursorページネーションカーソル

media upload <file>

npx emdash media upload ./photo.jpg
npx emdash media upload ./photo.jpg --alt "A sunset" --caption "Taken in Bristol"
オプション説明
--alt代替テキスト
--captionキャプションテキスト

media get <id>

npx emdash media get 01MEDIA123

media delete <id>

npx emdash media delete 01MEDIA123

コンテンツ全体の全文検索。

npx emdash search "hello world"
npx emdash search "hello" --collection posts --limit 5
オプションエイリアス説明
--collection-cコレクションでフィルタ
--limit-l最大結果数

emdash taxonomy

タクソノミーとタームを管理します。

taxonomy list

npx emdash taxonomy list

taxonomy terms <name>

npx emdash taxonomy terms categories
npx emdash taxonomy terms tags --limit 50
オプションエイリアス説明
--limit-l最大ターム数
--cursorページネーションカーソル

taxonomy add-term <taxonomy>

npx emdash taxonomy add-term categories --name "Tech" --slug tech
npx emdash taxonomy add-term categories --name "Frontend" --parent 01PARENT123
オプション説明
--nameタームラベル(必須)
--slugタームスラッグ(デフォルトはスラッグ化された名前)
--parent親タームID(階層的タクソノミー用)

emdash menu

ナビゲーションメニューを管理します。

npx emdash menu list
npx emdash menu get primary

すべてのアイテムを含むメニューを返します。

emdash export-seed

データベーススキーマとコンテンツをシードファイルとしてエクスポートします。ローカルSQLiteファイルで直接動作します。

npx emdash export-seed [options] > seed.json

オプション

オプションエイリアス説明デフォルト
--database-dデータベースファイルパス./data.db
--cwd作業ディレクトリ現在のディレクトリ
--with-contentコンテンツを含める(すべてまたはカンマ区切りのコレクション)
--no-prettyJSONフォーマットを無効化false

出力形式

エクスポートされたシードファイルには以下が含まれます:

  • 設定:サイトタイトル、タグライン、ソーシャルリンク
  • コレクション:フィールドを含むすべてのコレクション定義
  • タクソノミー:タクソノミー定義とターム
  • メニュー:アイテムを含むナビゲーションメニュー
  • ウィジェットエリア:ウィジェットエリアとウィジェット
  • コンテンツ(要求された場合):ポータビリティのための$media参照と$ref:構文を含むエントリー

emdash secrets generate

デプロイ用のEMDASH_ENCRYPTION_KEYを生成します。このキーはプラグインシークレットを静止時に暗号化するために使用されます。

npx emdash secrets generate

新しいキーをstdoutに出力します。シークレットストアにパイプするか、--writeで開発ファイルに直接書き込みます。次のコマンドはキーを.dev.varsまたは.envに書き込みます:

npx emdash secrets generate --write .dev.vars
npx emdash secrets generate --write .env

--write--forceなしで既存のエントリーを上書きすることを拒否します。既存の暗号化データを持つデプロイでキーを置き換えると、それらのシークレットが読めなくなるため、この保護は意図的です。

emdash secrets fingerprint <key>

値を公開せずにキーの8文字のフィンガープリント(kid)を出力します。これはCIで正しいキーがデプロイされたことを確認するのに便利です。次のコマンドはキーのフィンガープリントを出力します:

npx emdash secrets fingerprint emdash_enc_v1_...

生成されたファイル

.emdash/types.ts

emdash typesコマンドは各コレクションのTypeScriptインターフェースを生成します:

// 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;
}

.emdash/schema.json

コマンドはツール用に生のスキーマエクスポートも書き込みます:

{
  "version": "a1b2c3d4",
  "collections": [
    {
      "slug": "posts",
      "label": "Posts",
      "fields": [...]
    }
  ]
}

環境変数

変数説明
EMDASH_DATABASE_URLデータベースURL(devによって自動設定)
EMDASH_TOKENリモート操作用の認証トークン
EMDASH_URLtypesdev --typesのデフォルトリモートURL
EMDASH_ENCRYPTION_KEYプラグインシークレットを静止時に暗号化するためのキー。オペレーターが提供 — データベースには決して保存されません。emdash secrets generateで生成。
EMDASH_PREVIEW_SECRETプレビューHMACシークレットのオプション上書き。設定されていない場合、EmDashがoptionsテーブルに生成して保持。
EMDASH_IP_SALTコメンターIPハッシュソルトのオプション上書き。設定されていない場合、EmDashがoptionsテーブルに生成して保持。
EMDASH_AUTH_SECRETレガシー。設定されている場合、IPソルトソースとして使用され、既存のインストールはアップグレード後も安定したコメンターIPハッシュを保持。新規インストールではこれを設定すべきではありません。

パッケージスクリプト

便利なようにpackage.jsonスクリプトとしてCLIコマンドを追加してください:

{
	"scripts": {
		"dev": "emdash dev",
		"types": "emdash types",
		"export-seed": "emdash export-seed",
		"db:reset": "rm -f data.db"
	}
}

終了コード

コード説明
0成功
1エラー(設定、ネットワーク、データベース)