next.js TurboRepo,仅运行部分工作区

jecbmhm3  于 2023-06-05  发布在  其他
关注(0)|答案(2)|浏览(184)

这是我的工作空间结构:

  • 应用程序
  • web-1(下一页)
  • web-2(下一页)
  • web-3(下一页)
  • Package
  • pack-1(ui)
  • pack-2(react utils)
  • pack-3(node utils)
  • 服务
  • service-1(express)
  • service-2(express)
  • service-3(express)
  • service-4(express)

我希望能够运行“运行开发:网络-1”,或“运行开发:网络-2”或“运行开发:网络-3”,其中始终所有的软件包都是可用的一个或两个服务包括在内
如果我现在运行“yarn dev”,所有东西都会启动,我实际上必须将--concurrency设置为更高的值,我不想这样做。

nr9pn0ug

nr9pn0ug1#

为了实现运行Web应用特定开发脚本的预期行为,同时确保所有包可用,并包含一个或两个服务,您可以使用Yarn工作区和脚本管理工具(如npm-run-all)或同时使用。
为此,您需要安装必要的依赖项:

yarn add -D npm-run-all

更新根目录下的package.json文件,以包含dev脚本:
json

"scripts": {
  "dev:web-1": "cd apps/web-1 && yarn dev",
  "dev:web-2": "cd apps/web-2 && yarn dev",
  "dev:web-3": "cd apps/web-3 && yarn dev",
  "dev:services": "run-p dev:service-1 dev:service-2",
  "dev:service-1": "cd services/service-1 && yarn dev",
  "dev:service-2": "cd services/service-2 && yarn dev",
  "dev:all": "run-p dev:packages dev:web-1 dev:web-2 dev:web-3 dev:services",
  "dev:packages": "yarn workspace pack-1 dev && yarn workspace pack-2 dev && yarn workspace pack-3 dev"
}

在各自的apps/web-X和services/service-X目录中,确保yarn dev脚本在各自的package.json文件中正确定义。
现在,您可以运行以下命令:
yarn dev:web-1启动web-1的开发服务器。
yarn dev:web-2启动web-2的开发服务器。
yarn dev:web-3启动web-3的开发服务器。
yarn dev:services用于启动service-1和service-2的开发服务器。
yarn dev:all启动所有开发服务器,包括Web应用程序和选定的服务。
通过分离每个Web应用和服务的特定开发脚本,并使用脚本管理工具,如npm-run-all或并发运行,您可以控制运行不同服务的并发性,并确保所有所需的包可用。
请记住根据特定的项目结构和配置更新脚本和文件路径。

sshcrbum

sshcrbum2#

好了,在对文档进行了更长时间的研究之后,我发现--filter flag可以在turbo run命令上设置多次。因此,我的解决方案是将脚本添加到我的主package.json

"scripts": {
    "build": "turbo run build",
    "dev": "turbo run dev",
    "lint": "turbo run lint",
    "format": "prettier --write \"**/*.{ts,tsx,md}\"",
    "dev:web-1": "turbo run dev --filter=web-1 --filter=service-2 --filter=service-3",
    "dev:screen": "turbo run dev --filter=web-2 --filter=service-1"
  },

相关问题