构建复杂应用时,你可能希望在开发期间运行多个 Workers。本指南介绍在本地运行多个 Workers 的不同方法,以及各自适用的场景。
你可以通过向 dev 服务器传入多个配置文件,在单个 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)作为辅助 Workers 运行,可通过 service binding 或 tail consumer 从主要 Worker 访问。
使用 Vite 插件
在 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 属于同一应用或同一代码库
- 你需要使用
script_name从另一个 Worker 访问 Durable Object 命名空间或 Workflow,或设置 producer 与 consumer Workers 分离的 Queues
你也可以在独立的 dev 命令中运行每个 Worker,各自使用单独的终端和配置。
# Terminal 1
npx wrangler dev -c ./app/wrangler.jsonc# Terminal 1
yarn wrangler dev -c ./app/wrangler.jsonc# Terminal 1
pnpm wrangler dev -c ./app/wrangler.jsonc# Terminal 2
npx wrangler dev -c ./api/wrangler.jsonc# Terminal 2
yarn wrangler dev -c ./api/wrangler.jsonc# Terminal 2
pnpm wrangler dev -c ./api/wrangler.jsonc这些 Workers 在不同的 dev 命令中运行,但仍可通过 service binding 或 tail consumer 相互通信,无论它们是通过 wrangler dev 还是 vite dev 启动。
在以下情况下使用此方法:
- 你希望每个 Worker 在开发期间可通过各自的本地 URL 访问,因为使用单个 dev 命令时只有主要 Worker 会被暴露
- 每个 Worker 有自己的构建设置或工具链——例如,一个使用带自定义插件的 Vite,另一个是纯 Wrangler 项目
- 你需要灵活地独立运行和开发 Workers,而无需重构项目或合并配置
这种设置尤其适用于大型项目,其中每个团队维护一部分 Workers。在单个 dev 命令中运行所有内容可能需要大量重构或构建集成,而这并不总是可行。