Monorepo 是包含多个应用程序的单个仓库。此设置有以下几个优点:
- 简化依赖管理:使用 pnpm workspaces ↗ 和 syncpack ↗ 等工具,从单一位置管理所有 Worker 和共享包的依赖。
- 代码共享和复用:通过创建共享包,轻松在 Worker 之间共享通用逻辑、类型和工具。
- 原子提交:影响多个 Worker 或共享库的更改可以一起提交,使历史记录更易于理解并降低不一致的风险。
- 一致的工具链:在所有项目中应用相同的构建、测试、lint 和格式化配置(例如,通过 Turborepo ↗ 进行任务编排和
packages/中的共享配置),确保 Worker 之间一致的工具链和代码质量。 - 更轻松的重构:在单个仓库内跨多个 Worker 或共享包进行代码重构要容易得多。
- cloudflare/mcp-server-cloudflare ↗
- jahands/workers-monorepo-template ↗
- cloudflare/templates ↗
- cloudflare/workers-sdk ↗
要设置 monorepo 工作流:
- 在 Workers & Pages 仪表板 ↗中找到与项目关联的 Worker。
- 将 monorepo 连接到仓库中的每个 Worker。
- 为每个 Worker 设置根目录,指定其
wrangler.jsonc的位置以及构建和部署命令应运行的位置。 - 可选:为每个 Worker 配置唯一的构建和部署命令。
- 可选:为每个 Worker 配置构建监视路径以监控特定路径的更改。
当 monorepo 有新提交时,如果更改在其包含的监视路径内,将为每个 Worker 触发新的构建和部署。你还可以在 GitHub 中通过检查运行或在 GitLab 中通过提交状态查看与仓库关联的每个构建的状态。
在示例 ecommerce-monorepo 中,应为 product-service、order-service 和 notification-service 创建 Worker 项目。
应在所有 Worker 项目中添加与 ecommerce-monorepo 的 Git 连接。如果你使用 monorepo 工具(如 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/
你可以通过完成以下步骤将 Wrangler Environments 与 Workers Builds 一起使用:
- 如果尚未创建,请通过 Wrangler 部署以在仪表板上创建环境的 Worker。
- 找到环境的 Worker。它们通常命名为
[Worker 名称] - [环境名称]。 - 将仓库连接到每个环境的 Worker。
- 在每个 Worker 中,编辑 Wrangler 命令以在构建配置中的部署命令和非生产分支部署命令(如适用)中包含标志
--env: <environment name>。
当仓库中检测到新提交时,将为每个关联的 Worker 触发新的构建/部署。
假设你有一个名为 my-worker 的 Worker,并想在 wrangler.jsonc 中设置两个环境 staging 和 production。如果尚未部署,可以使用命令 wrangler deploy --env staging 和 wrangler deploy --env production 为每个环境部署 my-worker。
在 Cloudflare 仪表板中,你应该找到两个 Worker my-worker-staging 和 my-worker-production。然后,将 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。