Emdash CMS デプロイコマンドのコンテキスト FAQ
monorepo・テンプレート由来・スタンドアロン構成のそれぞれで、Emdash CMS のデプロイコマンドをどこで実行すべきか。
デプロイコマンドはどこで実行すべき?
デフォルトルール:対象サイトのプロジェクトルートで実行する。
ディレクトリが違うと、スクリプト・設定・バインディングが別のコンテキストに解決されがち。
「対象プロジェクトのルート」とは?
通常、次が揃っている:
- プロジェクト固有の
package.json - サイト固有の
astro.config.* wrangler.jsonc(Cloudflare フロー用)
この 3 つがあれば、おそらく正しいデプロイコンテキスト。
monorepo・テンプレートコピー・スタンドアロンではどう違う?
スタンドアロン
最も直接的:すべてのコマンドを 1 ディレクトリで実行。
テンプレート由来
テンプレからコピー後、プロジェクトの name・スクリプト・バインドを更新してからデプロイコマンドを実行。
Monorepo
デプロイ前に対象アプリのパッケージに入る。スクリプトが明示的にそのパッケージへプロキシしない限り、monorepo ルートからアプリのデプロイコマンドを実行しない。
よくある「ディレクトリ違い」の症状は?
- デプロイスクリプトが見つからない(実体はサブディレクトリにある)
wrangler.jsoncがない、または別ファイルが読み込まれる- バインド名の不一致(別プロジェクトの設定が使われる)
- ビルドは通るがデプロイ先 Worker 名が違う
多くはコンテキストの失敗で、コマンド構文の失敗ではない。
20 秒プリフライト
デプロイコマンドの前に:
pwdが対象プロジェクトを指しているか。package.jsonのnameが対象サイトと一致するか。wrangler.jsoncのname・D1・R2 が対象環境と一致するか。
繰り返しリトライより時間の節約になる。
パッケージマネージャを混在させてよい?
非推奨。
デプロイフローごとに 1 つにし、ロックファイルの drift と依存解決のずれを避ける。
コンテキスト誤りを防ぐチーム習慣
推奨:
- README にコマンドを実行する正確なディレクトリを書く
- 重要スクリプトにプリフライトを入れる
- CI でパス整合チェックを入れる
多くのデプロイ失敗はプラットフォームの深い問題ではなく、暗黙のコマンドコンテキスト前提の誤り。
便利なコマンド断片
pwd
ls
npm run build
npm run deploy