複雑なアプリケーションを作るときは、開発中に複数の Workers を動かしたくなることがあります。このガイドでは、複数の Workers をローカルで動かす方法と、それぞれの使い分けを説明します。
複数の設定ファイルを開発サーバーに渡すと、1 つの dev コマンドで複数の Workers を動かせます。
Wrangler を使う
npx wrangler dev -c ./app/wrangler.jsonc -c ./api/wrangler.jsoncyarn wrangler dev -c ./app/wrangler.jsonc -c ./api/wrangler.jsoncpnpm wrangler dev -c ./app/wrangler.jsonc -c ./api/wrangler.jsonc最初の設定(./app/wrangler.jsonc)がプライマリ Worker になり、http://localhost:8787 で公開されます。追加の設定(例: ./api/wrangler.jsonc)は補助 Worker として動き、プライマリ Worker から Service Bindings または tail consumer 経由で利用できます。
Vite plugin を使う
Vite の設定で auxiliaryWorkers を指定します。
import { defineConfig } from "vite";
import { cloudflare } from "@cloudflare/vite-plugin";
export default defineConfig({
plugins: [
cloudflare({
configPath: "./app/wrangler.jsonc",
auxiliaryWorkers: [
{
configPath: "./api/wrangler.jsonc",
},
],
}),
],
});次に実行します。
npx vite devyarn vite devpnpm vite devこの方法が向いている場合:
- 開発セットアップを最もシンプルにしたい
- Workers が同じアプリケーションまたは同じコードベースの一部である
- 別の Worker の Durable Object 名前空間や Workflow に
script_nameでアクセスする、またはプロデューサーとコンシューマーの Worker が分かれた Queues を設定する
各 Worker を、それぞれ別のターミナルと設定で、別々の dev コマンドとして動かすこともできます。
# ターミナル 1
npx wrangler dev -c ./app/wrangler.jsonc# ターミナル 1
yarn wrangler dev -c ./app/wrangler.jsonc# ターミナル 1
pnpm wrangler dev -c ./app/wrangler.jsonc# ターミナル 2
npx wrangler dev -c ./api/wrangler.jsonc# ターミナル 2
yarn wrangler dev -c ./api/wrangler.jsonc# ターミナル 2
pnpm wrangler dev -c ./api/wrangler.jsoncこれらの Workers は別々の dev コマンドで動きますが、wrangler dev と vite dev のどちらで起動しても、Service Bindings または tail consumer 経由で相互に通信できます。
この方法が向いている場合:
- 開発中に各 Worker を独自のローカル URL で公開したい(1 つの dev コマンドではプライマリ Worker だけが公開されるため)
- 各 Worker に独自のビルド設定やツールがある。たとえば、一方はカスタムプラグイン付きの Vite、もう一方は素の Wrangler プロジェクト、など
- プロジェクト構成を変えたり設定を統合したりせずに、Workers を独立して動かして開発したい
大規模プロジェクトで、チームごとに一部の Workers を保守している場合に特に有効です。すべてを 1 つの dev コマンドにまとめると、大きな構成変更やビルド統合が必要になり、現実的でないことがあります。