CLIリファレンス
このページで分かること
emdashCLIのインストール方法、稼働中のサイトに接続するときの認証情報の優先順、共通のフラグと出力の形式- 各コマンド(
init、seed、migrate、types、content、schema、media、export-seed、secretsなど)の使い方 - CLIが生成するファイル(
emdash-env.d.ts、.emdash/types.ts、.emdash/schema.json)、環境変数、終了コード
このページの目次
EmDash CLIは、データベースのセットアップ、型の生成、コンテンツの作成と編集、スキーマの管理、メディア、プラグインの開発のためのコマンドを提供します。
インストール
CLIは emdash パッケージに含まれています。次のコマンドでインストールします。
npm install emdash
コマンドは npx emdash で実行するか、package.json にスクリプトとして追加します。短く書けるように、同じ実行ファイルを em という名前でも使えます。
サイトは、pnpm dev などのパッケージスクリプトで起動します。パッケージスクリプトはAstroを起動します。EmDashのインテグレーションが emdash-env.d.ts を生成し、ランタイムが最初のリクエストで未適用のマイグレーションを実行します。データベースが空でセットアップが完了していない場合は、同梱のシードも適用します。
認証
稼働中のEmDashのインスタンスに接続するコマンドは、次の順番で認証情報を決めます。
--tokenフラグ:コマンドラインで明示的に指定したトークン- 環境変数
EMDASH_TOKEN - 保存済みの認証情報:
~/.config/emdash/auth.json(emdash loginが保存したもの) - 開発用バイパス:URLがlocalhostで、使えるトークンがない場合は、開発用バイパスのエンドポイントを通して自動的に認証します
types、whoami、content、schema、media、search、taxonomy、menu の各コマンドは、稼働中のインスタンスに接続します。認証のコマンドは、それぞれ独自の接続オプションを持ちます。ローカルの開発サーバーに接続する場合、トークンは必要ありません。
やさしい解説:やさしい解説
WordPressでは、記事の作成や公開は管理画面から操作します。EmDashでは、同じ操作の一部をこのCLIからも実行できます。CLIは、動いているサイト(インスタンス)に接続して操作するため、誰が操作しているかを示す認証情報が必要です。ただし、自分のパソコンの開発サーバー(localhost)に接続する場合は、トークンを用意しなくても自動的に認証されます。本番のサイトを操作するときは、emdash login でログインするか、トークンを指定します。
共通のフラグ
接続のフラグは、コマンドによって異なります。下の表でグループ名で書いたコマンドは、そのグループのすべてのサブコマンドを指します。
| フラグ | 短縮形 | 使えるコマンド | 説明と既定値 |
|---|---|---|---|
--url |
-u |
types, login, logout, whoami, content, schema, media, search, taxonomy, menu |
インスタンスのURL。既定値は EMDASH_URL または http://localhost:4321 |
--token |
-t |
types, whoami, content, schema, media, search, taxonomy, menu |
トークン。フラグ、EMDASH_TOKEN、保存済みの認証情報のいずれかから取得 |
--header "Name: Value" |
-H |
types, login, content, schema, media, search, taxonomy, menu |
繰り返し指定できるヘッダー。EMDASH_HEADERS と保存済みのヘッダーに追加されます |
--json |
whoami, content, schema, media, search, taxonomy, menu |
ターミナル向けに整形した出力の代わりに、そのままのJSONを出力します |
出力
コマンドが対話的なターミナルに結果を出力する場合は、読みやすく整形します。上の表で --json が使えるコマンドは、このフラグを指定した場合、または出力をパイプに渡した場合に、そのままのJSONを出力します。emdash migrate は、明示的に --json オプションを指定した場合だけJSONを出力します。
コマンド
emdash init
package.json のテンプレートのメタデータから、ローカルのSQLiteデータベースを初期化します。このコマンドはコアマイグレーションを実行し、次に emdash.schema で指定された任意のSQLファイルを適用します。JSONのシードデータを適用するには、別に emdash seed を実行します。
npx emdash init [options]
| オプション | 短縮形 | 説明 | 既定値 |
|---|---|---|---|
--database |
-d |
SQLiteデータベースのパス | ./data.db |
--cwd |
プロジェクトの作業ディレクトリ | カレントディレクトリ | |
--force |
-f |
コレクションがすでにある場合も、テンプレートのスキーマを適用し直します | false |
--force を指定しない場合、初期化済みのデータベースは変更しません。このコマンドはローカルのSQLiteファイルを直接開きます。デプロイの中で管理するD1、PostgreSQL、libSQL、Hyperdriveのマイグレーションには emdash migrate を使います。
emdash doctor
ローカルのSQLiteデータベースについて、接続、マイグレーション、コレクション、テーブル、ユーザーの問題を確認します。プロジェクトにWranglerの設定がある場合は、Cron TriggerとEmDashの scheduled() ハンドラーが両方とも設定されているかも確認します。
npx emdash doctor [options]
| オプション | 短縮形 | 説明 | 既定値 |
|---|---|---|---|
--database |
-d |
SQLiteデータベースのパス | ./data.db |
--cwd |
プロジェクトの作業ディレクトリ | カレントディレクトリ | |
--json |
構造化した結果を出力します | false |
このコマンドは、それぞれの確認結果を合格(pass)、警告(warning)、失敗(failure)で報告し、失敗した確認がある場合は0以外の終了コードで終了します。
emdash seed
JSONのシードを検証するか、ローカルのSQLiteデータベースに適用します。位置引数でパスを指定した場合はそれを使い、なければ .emdash/seed.json、次に package.json の emdash.seed のパスを使います。
npx emdash seed [path] [options]
| オプション | 短縮形 | 説明 | 既定値 |
|---|---|---|---|
--database |
-d |
SQLiteデータベースのパス | ./data.db |
--cwd |
プロジェクトの作業ディレクトリ | カレントディレクトリ | |
--validate |
データベースを変更せずにシードを検証します | false |
|
--no-content |
エントリー、バイライン、タクソノミーのタームを読み込みません | false |
|
--on-conflict |
既存のレコードの扱い(skip、update、error) |
skip |
|
--uploads-dir |
シードのメディアに使うローカルのディレクトリ | ./uploads |
|
--media-base-url |
ローカルのシードのメディアについて保存するベースURL | /_emdash/api/media/file |
シードを適用すると、最初にコアマイグレーションが実行されます。データベースを開いたり作成したりせずにファイルだけを確認したい場合は、継続的インテグレーション(CI)で --validate を使います。
emdash migrate
Astroのビルドが出力したコアマイグレーションのセットを確認または適用します。
npx emdash migrate [options]
npx emdash migrate --check [options]
npx emdash migrate --status --json [options]
既定では、このコマンドはプロジェクトのルートを見つけて .emdash/migrations.json を読み込みます。プロジェクトにインストールされているEmDashパッケージに照らしてマニフェストを検証し、アダプターのプロジェクト内の実行モジュール(executor)を解決して、SQLを実行する前に変更されない適用先(target)を表示します。
オプション
| オプション | 説明 |
|---|---|
--check |
何も適用しません。未適用または不明なマイグレーションの記録がある場合は0以外の終了コードで終了します |
--status |
適用せずに正確な状態を報告します。報告に成功すると終了コード0で終了します |
--json |
形式の固定されたマイグレーションの報告をJSONで出力します |
--manifest <path> |
標準以外のパスのマニフェストを読み込みます |
--from-config |
マニフェストの代わりに、信頼できるAstroの設定を明示的に評価します |
--config <path> |
--from-config と一緒に使うAstroの設定ファイルのパス |
--expected-target-fingerprint <sha256> |
非対話的に適用する場合に必須の安全確認 |
--database <path> |
SQLiteのパスを上書きします |
--database-url-env <name> |
PostgreSQLの接続情報を持つ環境変数の名前を上書きします |
--d1 <uuid-or-name> |
D1データベースを明示的に選択します |
--account-id <id> |
Cloudflareのアカウントを明示的に選択します |
--wrangler-config <path> |
明示的に指定したWranglerの設定からD1のバインディングの情報を読み込みます |
--wrangler-env <name> |
環境を選択します。--wrangler-config が必要です |
対話的に人が読める形式で適用する場合は、確認を求めます。非対話的に適用する場合と、--json を使って適用する場合は、その適用先について表示された正確なフィンガープリントが必要です。down や --dry-run はありません。作業が必要かどうかを判断するには --check を使います。
終了コード
| コード | 意味 |
|---|---|
0 |
成功。--status の報告の成功を含みます |
1 |
検証、設定、適用先、マイグレーション、後片付けのいずれかのエラー |
2 |
--check が、既知の未適用のマイグレーションを見つけました |
3 |
--check が、適用済みの不明な記録を見つけました(未適用より優先されます) |
4 |
確認がない、確認が拒否された、または適用先のフィンガープリントが一致しません |
130 |
実行モジュールの後片付けを一定の範囲で終えたあと、中断されました |
デプロイの順番、適用先の認証情報、D1での直列化については、コアDBマイグレーションを参照してください。
emdash dev(非推奨)
この従来のコマンドは、Astroを起動する前にローカルのSQLiteデータベースを初期化し、マイグレーションします。この動作はサイトで設定したデータベースアダプターを使わないため、Cloudflare D1での開発とは両立しません。現在は、既存の呼び出しはデータベースの処理を始める前に非推奨の警告を表示します。
| オプション | 短縮形 | 説明 | 既定値 |
|---|---|---|---|
--database |
-d |
ローカルのSQLiteデータベースのパス | ./data.db |
--types |
-t |
Astroを起動する前にリモートの型を取得します | false |
--port |
-p |
Astroの開発サーバーのポート | 4321 |
--cwd |
プロジェクトの作業ディレクトリ | カレントディレクトリ |
emdash types
稼働中のEmDashのインスタンスのスキーマから、TypeScriptの型を生成します。
npx emdash types [options]
オプション
| オプション | 短縮形 | 説明 | 既定値 |
|---|---|---|---|
--url |
-u |
EmDashのインスタンスのURL | http://localhost:4321 |
--token |
-t |
認証トークン | 環境変数または保存済みの認証情報 |
--header |
-H |
独自のリクエストヘッダー。繰り返し指定できます | 環境変数または保存済みの認証情報 |
--json |
受け付けますが、このコマンドが書き出すファイルや進行状況の出力は変わりません | — | |
--output |
-o |
型の出力先のパス | .emdash/types.ts |
--cwd |
作業ディレクトリ | カレントディレクトリ |
例
# Generate types from local dev server
npx emdash types
# Generate from remote instance
npx emdash types --url https://my-site.pages.dev
# Custom output path
npx emdash types --output src/types/emdash.ts
動作
- インスタンスからスキーマを取得します
- TypeScriptの型定義を生成します
- 型を出力先のファイルに書き込みます
- 参照用に、同じ場所に
schema.jsonを書き込みます
emdash login
OAuth Device Flowを使って、EmDashのインスタンスにログインします。
npx emdash login [options]
オプション
| オプション | 短縮形 | 説明 | 既定値 |
|---|---|---|---|
--url |
-u |
EmDashのインスタンスのURL | http://localhost:4321 |
--header |
-H |
独自のリクエストヘッダー。繰り返し指定できます | EMDASH_HEADERS から取得 |
動作
- インスタンスから認証のエンドポイントを検出します
- localhostで認証が設定されていない場合は、自動的に開発用バイパスを使います
- それ以外の場合は、OAuth Device Flowを開始します。コードを表示し、ブラウザを開きます
- 承認されるまで確認を繰り返し、承認されたら認証情報を
~/.config/emdash/auth.jsonに保存します
保存した認証情報は、以降に同じインスタンスに接続するすべてのコマンドで自動的に使われます。
emdash logout
ログアウトし、保存済みの認証情報を削除します。
npx emdash logout [options]
オプション
| オプション | 短縮形 | 説明 | 既定値 |
|---|---|---|---|
--url |
-u |
EmDashのインスタンスのURL | http://localhost:4321 |
emdash whoami
現在認証されているユーザーを表示します。
npx emdash whoami [options]
オプション
| オプション | 短縮形 | 説明 | 既定値 |
|---|---|---|---|
--url |
-u |
EmDashのインスタンスのURL | http://localhost:4321 |
--token |
-t |
認証トークン | 環境変数または保存済みの認証情報 |
--json |
JSONで出力します |
メールアドレス、名前、ロール、認証方法、インスタンスのURLを表示します。
emdash content
コンテンツのアイテムを管理します。すべてのサブコマンドは、EmDashClient を通してリモートのAPIを使います。
content list <collection>
npx emdash content list posts
npx emdash content list posts --status published --limit 10
| オプション | 説明 |
|---|---|
--status |
ステータスで絞り込みます |
--locale |
ロケールで絞り込みます |
--limit |
最大件数 |
--cursor |
ページ分割のカーソル |
content get <collection> <id>
npx emdash content get posts 01ABC123
npx emdash content get posts 01ABC123 --raw
| オプション | 説明 |
|---|---|
--locale |
ID引数がスラッグの場合に使うロケール |
--raw |
Markdownの代わりに、そのままのPortable Textを返します |
--published |
保留中の下書きを無視し、公開済みのデータだけを返します |
レスポンスには _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文字列 |
--file |
JSONファイルからデータを読み込みます |
--stdin |
標準入力からデータを読み込みます |
--slug |
コンテンツのスラッグ |
--locale |
コンテンツのロケール |
--translation-of |
このアイテムを翻訳としてひも付ける、元のコンテンツのアイテムのID |
--draft |
自動的に公開せず、下書きのままにします |
データは --data、--file、--stdin のどれか1つだけで渡します。--draft を指定しない限り、新しいアイテムは自動的に公開されます。
content update <collection> <id>
現在の状態を確認したことを示すため、事前の get で得た _rev トークンを必ず渡します。これにより、確認していない変更を上書きすることを防ぎます。次の手順では、アイテムを読み込み、そのトークンを使って更新します。
# 1. Read the item, note the _rev
npx emdash content get posts 01ABC123
# 2. Update with the _rev from step 1
npx emdash content update posts 01ABC123 \
--rev MToyMDI2LTAyLTE0... \
--data '{"title": "Updated"}'
| オプション | 説明 |
|---|---|
--rev |
get で得たリビジョンのトークン(必須) |
--data |
コンテンツのデータを含むJSON文字列 |
--file |
JSONファイルからデータを読み込みます |
--locale |
ID引数がスラッグの場合に使うロケール |
--draft |
自動的に公開せず、更新を下書きのままにします |
--override-lock |
別の編集者がエントリーを開いていても書き込みます |
get のあとにアイテムが変更されていた場合、サーバーは409 Conflictを返します。読み込み直してから、もう一度実行します。
管理画面で誰かがエントリーを開いている場合、サーバーはコード ENTRY_LOCKED と、ロックしている人の名前を含むメッセージとともに409を返します。相手の作業が終わるのを待つか、--override-lock を指定します。同じフラグは content delete、content publish、content unpublish、content schedule でも使えます。
content delete <collection> <id>
npx emdash content delete posts 01ABC123
コンテンツのアイテムを論理削除します(ゴミ箱に移動します)。
別の編集者が開いているエントリーを削除するには、--override-lock を指定します。
content publish <collection> <id>
npx emdash content publish posts 01ABC123
別の編集者が開いているエントリーを公開するには、--override-lock を指定します。
content unpublish <collection> <id>
npx emdash content unpublish posts 01ABC123
別の編集者が開いているエントリーを非公開にするには、--override-lock を指定します。
content schedule <collection> <id>
npx emdash content schedule posts 01ABC123 --at 2026-03-01T09:00:00Z
| オプション | 説明 |
|---|---|
--at |
Z または明示的なUTCからの時差を含む、ISO 8601形式の日時(必須) |
別の編集者が開いているエントリーを予約公開するには、--override-lock を指定します。
content restore <collection> <id>
npx emdash content restore posts 01ABC123
ゴミ箱に入れたコンテンツのアイテムを元に戻します。
content translations <collection> <id>
エントリーの翻訳グループに含まれるすべての翻訳を一覧表示します。
npx emdash content translations posts 01ABC123
結果には、それぞれの翻訳のID、ロケール、スラッグ、ステータスと、指定したエントリーそのものかどうかが含まれます。
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、url、number、integer、boolean、datetime、select、multiSelect、portableText、image、file、reference、json、slug、repeater(必須) |
--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
| オプション | 説明 |
|---|---|
--mime |
MIMEタイプで絞り込みます |
--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
media repair-usage
1つのコレクション、またはすべてのコンテンツのコレクションについて、コンテンツのメディアの使用状況のインデックスを修復します。インポートやデータベースへの直接の書き込みのあと、使用状況の記録が古い、または信頼できない場合に使います。
npx emdash media repair-usage --collection posts
npx emdash media repair-usage --all
npx emdash media repair-usage --all --json
| オプション | 短縮形 | 説明 |
|---|---|---|
--collection |
-c |
1つのコンテンツのコレクションを修復します |
--all |
すべてのコンテンツのコレクションを修復します |
--collection と --all のどちらか1つだけを指定します。リモートで修復するには、管理者(Admin)のユーザーと、admin スコープを持つ認証トークンが必要です。
すべてのコンテンツの修復は同期的に実行されるため、大きなサイトでは時間や費用がかかる場合があります。1つのコレクションだけを修復すればよい場合は、--collection を使います。
構造化された修復結果が complete、partial、stale の場合は終了コード 0、failed の場合は終了コード 1 で終了します。自動化の処理やcronジョブでは、終了コード 0 をすべて修復できた意味として扱わず、--json を使って status、failedSourceCount、skippedSourceCount と、コレクションごとの集計を解析します。
emdash search
コンテンツ全体を全文検索します。
npx emdash search "hello world"
npx emdash search "hello" --collection posts --limit 5
| オプション | 短縮形 | 説明 |
|---|---|---|
--collection |
-c |
コレクションで絞り込みます |
--locale |
ロケールで絞り込みます | |
--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
ナビゲーションのメニューを管理します。
menu list
npx emdash menu list
menu get <name>
npx emdash menu get primary
メニューを、そのすべての項目とともに返します。
emdash plugin
EmDashのプラグインを作成、検証、バンドル、公開します。マーケットプレイスへのログインは、CMSのインスタンスへのログインとは別です。
plugin init
サンドボックス型プラグインまたはネイティブ型プラグインの雛形を作ります。
npx emdash plugin init --dir ./my-plugin --name my-plugin --format sandboxed
| オプション | 説明 | 既定値 |
|---|---|---|
--dir |
作成するディレクトリ | カレントディレクトリ |
--name |
プラグインのパッケージ名またはID | 対話的に入力 |
--format |
sandboxed または native |
対話的に入力 |
--native |
--format native の短縮形 |
false |
plugin bundle
プラグインを検証し、マーケットプレイス用のtarballを作成します。
npx emdash plugin bundle --dir ./my-plugin --outDir ./artifacts
| オプション | 短縮形 | 説明 | 既定値 |
|---|---|---|---|
--dir |
プラグインのディレクトリ | カレントディレクトリ | |
--outDir |
-o |
tarballの出力先のディレクトリ | ./dist |
--validateOnly |
tarballを作成せずに検証だけを実行します | false |
plugin validate
tarballを作成せずに、plugin bundle と同じ検証を実行します。
npx emdash plugin validate --dir ./my-plugin
任意の --dir でプラグインのディレクトリを選択します。既定値はカレントディレクトリです。
plugin publish
バンドルをマーケットプレイスにアップロードし、既定では処理の結果を待ちます。
npx emdash plugin publish --tarball ./dist/my-plugin-1.0.0.tar.gz
| オプション | 説明 | 既定値 |
|---|---|---|
--tarball |
作成済みのプラグインのtarball | — |
--dir |
--build と一緒に使うプラグインのディレクトリ |
カレントディレクトリ |
--build |
アップロードの前にプラグインをビルドします | false |
--registry |
マーケットプレイスのベースURL | https://marketplace.emdashcms.com |
--no-wait |
アップロードしたら、処理の結果を待たずに終了します | false |
--tarball を指定するか、--build を指定して先に --dir からビルドします。
plugin login
GitHubのデバイスフローを使って、マーケットプレイスに認証します。--registry で別のマーケットプレイスを選択できます。既定値は https://marketplace.emdashcms.com です。
npx emdash plugin login
plugin logout
保存済みのマーケットプレイスの認証情報を削除します。任意の --registry には、ログインに使ったものと同じマーケットプレイスを指定する必要があります。
npx emdash plugin logout
emdash export-seed
データベースのスキーマとコンテンツを、シードファイルとしてエクスポートします。ローカルのSQLiteファイルを直接扱います。
npx emdash export-seed [options] > seed.json
オプション
| オプション | 短縮形 | 説明 | 既定値 |
|---|---|---|---|
--database |
-d |
データベースファイルのパス | ./data.db |
--cwd |
作業ディレクトリ | カレントディレクトリ | |
--with-content |
コンテンツを含めます(すべて、またはカンマ区切りで指定したコレクション) | ||
--pretty / --no-pretty |
インデント付きのJSON出力を有効または無効にします | インデント付きの出力が有効 |
出力形式
エクスポートしたシードファイルには、次のものが含まれます。
- 設定:サイトのタイトル、キャッチフレーズ、ソーシャルリンク
- コレクション:すべてのコレクションの定義とフィールド
- タクソノミー:タクソノミーの定義とターム
- メニュー:ナビゲーションのメニューと項目
- ウィジェットエリア:ウィジェットエリアとウィジェット
- コンテンツ(指定した場合):エントリー。別の環境でも使えるように、
$mediaの参照と$ref:の構文を使います
emdash secrets
プラグインの秘密情報の暗号化に使うキーを生成し、確認します。
secrets generate
デプロイ用の EMDASH_ENCRYPTION_KEY を生成します。このキーは、保存されたプラグインの秘密情報の暗号化に使われます。
npx emdash secrets generate
新しいキーを標準出力に表示します。シークレットの保管場所にパイプで渡すか、--write でローカルの .env ファイルに直接書き込みます。同じ .env ファイルは、Nodeが読み込むほか、ローカル開発ではWranglerとCloudflare Viteプラグインも読み込みます。
npx emdash secrets generate --write .env
--write は、--force を指定しない限り既存のエントリーを上書きしません。暗号化済みのデータがあるデプロイでキーを置き換えると、それらの秘密情報を読めなくなるため、この保護は意図的なものです。
secrets fingerprint <key>
キーの値を表に出さずに、キーの8文字のフィンガープリント(kid)を表示します。CIで、正しいキーがデプロイされたかを確認するのに役立ちます。次のコマンドは、キーのフィンガープリントを表示します。
npx emdash secrets fingerprint emdash_enc_v1_...
emdash auth(非推奨)
auth secret
従来の EMDASH_AUTH_SECRET の値を生成します。
npx emdash auth secret
既存のインストールでは、コメント投稿者のIPのハッシュ値を変えないために、この変数をそのまま使い続けられます。この変数はプラグインの秘密情報を暗号化しません。
生成されるファイル
emdash-env.d.ts
Astroのインテグレーションは、ローカルの開発サーバーの起動時に、プロジェクトのルートに emdash-env.d.ts を生成します。稼働中の開発サイトを通してスキーマを変更すると、このファイルを更新します。この宣言は EmDashCollections を拡張するため、getEmDashCollection("posts") などの呼び出しで、ローカルのデータベースに定義されたフィールドの型が推論されます。
このファイルは自動的に作られ、ローカルのAstroの開発の流れの一部です。作成するために emdash types を実行する必要はありません。
.emdash/types.ts
emdash types コマンドは、稼働中のインスタンスのスキーマを取得し、単独で使えるTypeScriptのインターフェースを書き出します。スキーマがリモートのEmDashのインスタンスにある場合、ツールが独自のパスのファイルを必要とする場合、ローカルのAstroの開発サーバーが動いていない場合に使います。
// Generated by EmDash CLI
// Do not edit manually - run `emdash types` to regenerate
import type { PortableTextBlock } from "emdash";
export interface Post {
id: string;
slug: string | null;
status: string;
title: string;
content?: PortableTextBlock[];
createdAt: Date;
updatedAt: Date;
publishedAt: Date | null;
bylines?: ContentBylineCredit[];
terms?: Record<string, TaxonomyTerm[]>;
}
リモートから生成した出力は、コレクションごとの単独のインターフェースで、EmDashCollections を拡張しません。emdash types を実行したときにだけ変わります。一方、emdash-env.d.ts はモジュールの拡張(module augmentation)を使い、ローカル開発の中で更新されます。
.emdash/schema.json
このコマンドは、選択したTypeScriptの出力の隣に、スキーマをそのままエクスポートした schema.json も書き出します。既定の出力パスの場合、このファイルは .emdash/schema.json です。
{
"version": "a1b2c3d4",
"collections": [
{
"slug": "posts",
"label": "Posts",
"fields": [...]
}
]
}
環境変数
| 変数 | 説明 |
|---|---|
EMDASH_DATABASE_URL |
データベースのURLを上書きします |
EMDASH_TOKEN |
リモートの操作に使う認証トークン |
EMDASH_URL |
共通のリモートクライアントを使うコマンドの既定のURL |
EMDASH_HEADERS |
共通のリモートクライアントと login が使う独自のリクエストヘッダー(改行区切り) |
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 のスクリプトに追加しておくと便利です。
{
"scripts": {
"dev": "astro dev",
"types": "emdash types",
"export-seed": "emdash export-seed",
"db:reset": "rm -f data.db"
}
}
全般的な終了コード
ほとんどのコマンドは、成功に 0、エラーに 1 を使います。emdash migrate は、終了コードの表にある特定の結果について、2、3、4、130 も使います。
| コード | 説明 |
|---|---|
0 |
成功 |
1 |
エラー(設定、ネットワーク、データベース) |