Skip to content

Monorepo Setup

apps/
api/wrangler.jsonc
worker/wrangler.jsonc
router/wrangler.jsonc
wrangler-deploy.config.ts
import { defineConfig, d1, kv, queue, worker, workerEnv } from "wrangler-deploy";
const db = d1("app-db");
const cache = kv("cache");
const events = queue("events");
const backend = worker("backend");
export const api = workerEnv({ DB: db, CACHE: cache, EVENTS: events, BACKEND: backend });
export const backendEnv = workerEnv({ DB: db, EVENTS: events });
export const router = workerEnv({ DB: db, EVENTS: events });
export default defineConfig({
version: 1,
workers: ["apps/api", "apps/worker", "apps/router"],
resources: {
/* ... */
},
serviceBindings: { "apps/api": { BACKEND: "apps/worker" } },
});

wrangler-deploy infers deploy order from service bindings.

Set accountId once in a root .wdrc / .wdrc.json and let all workers inherit it:

{
"accountId": "1234567890abcdef1234567890abcdef"
}

That context file is discovered by walking up from each worker directory, so one repo-level value covers the monorepo.

If you set CLOUDFLARE_ACCOUNT_ID in the environment (for example in CI), it explicitly overrides .wdrc for that run.