Nx CLI 运行许多命令不适用于多个应用程序

Cha*_*n15 16 monorepo nrwl nrwl-nx

我尝试使用 Nx 来尝试使用 Monorepos。我一直面临着通过命令为多个应用程序提供服务的问题nx run-many。如果我做错了什么,有人可以纠正我吗?

\n

使用的命令:nx run-many --target=serve --all

\n

我可以看到 Nx 控制台记录所有可用的应用程序,但只运行一个

\n
>  NX  Running target serve for projects:\n  - app1\n  - app2\n\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\xe2\x80\x94\n> nx run app1:serve \n
Run Code Online (Sandbox Code Playgroud)\n

小智 22

尝试这个:

nx run-many --parallel --target=serve --projects=frontend,backend 
Run Code Online (Sandbox Code Playgroud)

  • 该命令应该可以工作,但是当我有多个 Nest.js 应用程序时,端口会发生冲突。 (2认同)

Dhe*_*Rao 12

nx run-many --target=serve --all --maxParallel=100 
Run Code Online (Sandbox Code Playgroud)

--maxParallel 的默认值为 3,这意味着默认以 3 个批次运行任务。

另外,排除一些不提供服务的应用程序。

nx run-many --target=serve --all --maxParallel=100 --exclude=app-name
Run Code Online (Sandbox Code Playgroud)

吉图布


Ahm*_*asy 8

发生这种情况是由于端口覆盖,如果您有多个前端应用程序,例如它们将在同一端口上运行。您可以在project.json文件中管理每个项目配置,并且可以在其中处理每个项目的不同端口。

例子:

"serve": {
  "executor": "@nrwl/web:dev-server",
  "options": {
    "buildTarget": "react-todo:build",
    "hmr": true,
    "port": 3001
  },
  "configurations": {
    "production": {
      "buildTarget": "react-todo:build:production",
      "hmr": false
    }
  }
},
Run Code Online (Sandbox Code Playgroud)

这是(apps/<Your_Project_Name>/project.json中的反应配置


Hoa*_*Son 5

于 9/2022 更新解决方案。

  1. package.json添加这个脚本,它允许我们只用一个命令运行多个项目

    "all": "npx nx run-many --target=serve --all --maxParallel=100"

  2. apps文件夹内,有几个应用程序,然后转到它们的package.json,然后编辑 `targets ->serve -> options,如本示例所示

      "options": {
        "buildTarget": "your app name:build",
        "hmr": true,
        "port": 4201 // adding this
      },
    
    Run Code Online (Sandbox Code Playgroud)