モノレポは、複数のアプリケーションを 1 つのリポジトリにまとめた構成です。次のような利点があります。
- 依存関係の管理が簡単: pnpm workspaces ↗ や syncpack ↗ などのツールを使い、すべての Worker と共有パッケージの依存関係を一箇所で管理できます。
- コードの共有と再利用: 共有パッケージを作り、共通のロジック、型、ユーティリティを Worker 間で簡単に共有できます。
- アトミックなコミット: 複数の Worker や共有ライブラリにまたがる変更をまとめてコミットできます。履歴が追いやすくなり、不整合のリスクも減ります。
- ツールの統一: ビルド、テスト、リント、フォーマットの設定をすべてのプロジェクトに同じように適用できます(例: Turborepo ↗ でタスクをまとめ、共有設定を
packages/に置く)。Workers 全体でツールとコード品質を揃えられます。 - リファクタリングが容易: 複数の Worker や共有パッケージにまたがるコードのリファクタリングは、1 つのリポジトリ内の方がはるかに簡単です。
- cloudflare/mcp-server-cloudflare ↗
- jahands/workers-monorepo-template ↗
- cloudflare/templates ↗
- cloudflare/workers-sdk ↗
モノレポのワークフローを設定する手順は次のとおりです。
- Workers & Pages ダッシュボード ↗ で、プロジェクトに関連する Worker を探します。
- リポジトリ内の各 Worker に、モノレポを接続します。
- 各 Worker のルートディレクトリを設定し、
wrangler.jsoncの場所と、ビルドおよびデプロイコマンドを実行する場所を指定します。 - 必要に応じて、Worker ごとに固有のビルドコマンドとデプロイコマンドを設定します。
- 必要に応じて、各 Worker に ビルドウォッチパス を設定し、監視するパスを指定します。
モノレポに新しいコミットがあると、変更が各 Worker のウォッチパスに含まれる場合、その Worker でビルドとデプロイが始まります。各ビルドの状態は、GitHub では チェックラン、GitLab では コミットステータス で確認できます。
ecommerce-monorepo の例では、product-service、order-service、notification-service それぞれに Workers プロジェクトを作成します。
すべての Workers プロジェクトに、ecommerce-monorepo への Git 接続を追加します。Turborepo ↗ などのモノレポツールを使っている場合は、Worker ごとに異なるデプロイコマンドを設定できます。例: turbo deploy -F product-service。
各 Worker のルートディレクトリは、Wrangler 設定ファイルがある場所に設定します。たとえば product-service なら、ルートディレクトリは /workers/product-service/ です。必要に応じて ビルドウォッチパス を追加し、ビルドを最適化できます。
ecommerce-monorepo に新しいコミットがあると、変更が各 Worker のウォッチパスに含まれる場合、その Worker に設定したコマンドでビルドとデプロイが始まります。
- ecommerce-monorepo/
- workers/
- product-service/
- src/
- wrangler.jsonc
- order-service/
- src/
- wrangler.jsonc
- notification-service/
- src/
- wrangler.jsonc
- product-service/
- packages/
- schema/
- README.md
- workers/
Workers Builds で Wrangler Environments を使う手順は次のとおりです。
- ダッシュボード上に環境用の Worker がまだない場合は、Wrangler でデプロイ して作成します。
- 環境用の Worker を探します。名前は通常
[name of Worker] - [environment name]です。 - 各環境の Worker にリポジトリを接続します。
- 各 Worker のビルド設定で、デプロイコマンドと本番以外のブランチ向けデプロイコマンド(該当する場合)に
--env: <environment name>フラグを追加します。
リポジトリに新しいコミットがあると、関連する各 Worker でビルドとデプロイが始まります。
my-worker という Worker があり、wrangler.jsonc で staging と production の 2 つの環境を設定するとします。まだデプロイしていない場合は、wrangler deploy --env staging と wrangler deploy --env production で各環境に my-worker をデプロイできます。
Cloudflare ダッシュボードに、my-worker-staging と my-worker-production の 2 つの Worker が表示されます。Worker my-worker の Git リポジトリを、両方の環境 Worker に接続します。各環境 Worker のビルド設定で、デプロイコマンドをそれぞれ npx wrangler deploy --env staging と npx wrangler deploy --env production に、本番以外のブランチ向けデプロイコマンドをそれぞれ npx wrangler versions upload --env staging と npx wrangler versions upload --env production に変更します。