Emdash CMS デプロイコマンドのコンテキスト FAQ

monorepo・テンプレート由来・スタンドアロン構成のそれぞれで、Emdash CMS のデプロイコマンドをどこで実行すべきか。

デプロイコマンドはどこで実行すべき?

デフォルトルール:対象サイトのプロジェクトルートで実行する。
ディレクトリが違うと、スクリプト・設定・バインディングが別のコンテキストに解決されがち。

「対象プロジェクトのルート」とは?

通常、次が揃っている:

  • プロジェクト固有の package.json
  • サイト固有の astro.config.*
  • wrangler.jsonc(Cloudflare フロー用)

この 3 つがあれば、おそらく正しいデプロイコンテキスト。

monorepo・テンプレートコピー・スタンドアロンではどう違う?

スタンドアロン

最も直接的:すべてのコマンドを 1 ディレクトリで実行。

テンプレート由来

テンプレからコピー後、プロジェクトの name・スクリプト・バインドを更新してからデプロイコマンドを実行。

Monorepo

デプロイ前に対象アプリのパッケージに入る。スクリプトが明示的にそのパッケージへプロキシしない限り、monorepo ルートからアプリのデプロイコマンドを実行しない。

よくある「ディレクトリ違い」の症状は?

  • デプロイスクリプトが見つからない(実体はサブディレクトリにある)
  • wrangler.jsonc がない、または別ファイルが読み込まれる
  • バインド名の不一致(別プロジェクトの設定が使われる)
  • ビルドは通るがデプロイ先 Worker 名が違う

多くはコンテキストの失敗で、コマンド構文の失敗ではない。

20 秒プリフライト

デプロイコマンドの前に:

  1. pwd が対象プロジェクトを指しているか。
  2. package.jsonname が対象サイトと一致するか。
  3. wrangler.jsoncname・D1・R2 が対象環境と一致するか。

繰り返しリトライより時間の節約になる。

パッケージマネージャを混在させてよい?

非推奨。
デプロイフローごとに 1 つにし、ロックファイルの drift と依存解決のずれを避ける。

コンテキスト誤りを防ぐチーム習慣

推奨:

  • README にコマンドを実行する正確なディレクトリを書く
  • 重要スクリプトにプリフライトを入れる
  • CI でパス整合チェックを入れる

多くのデプロイ失敗はプラットフォームの深い問題ではなく、暗黙のコマンドコンテキスト前提の誤り。

便利なコマンド断片

pwd
ls
npm run build
npm run deploy