使用“watch”标志时,NX 运行许多功能会阻止某些项目的构建

问题描述 投票:0回答:1

我正在与 NX 一起在 Angular 环境中工作。我的

package.json
中有以下脚本来构建项目:

"start:all": "nx run-many --target=build --projects=\"proj1,proj2,proj3,proj4\" --watch --skip-nx-cache"

运行此命令后,它将运行

proj2:build --watch
,然后开始观看该项目。在这种情况下,它不会开始构建其他 3 个项目。

我知道NX有他们的手表功能。我不确定是否有更好的方法可以以这种方式完成此任务,但它似乎慢得多/似乎没有缓存结果。


  • 我尝试添加

    --parallel
    --maxParallel=100
    ,但没有解决。

  • 我尝试删除

    --watch
    标志。这允许构建所有项目,但我需要监视功能。

  • 这是最奇怪的部分。我尝试删除它被卡住的项目,它说

Running target build for 3 projects and 1 task they depend on:

然后仍然构建了我已删除的项目(其他依赖项依赖于它),正确构建了另外 2 个项目,但留下了另一个项目未构建。


我假设有一些问题需要修复它们如何以某种方式相互依赖,或者我需要修复它们如何彼此并行运行。

任何信息都有帮助,谢谢!

angular typescript build configuration nrwl-nx
1个回答
0
投票

解决方案:

在每个

project.json
"build"
部分下,添加以下内容:

"dependsOn": [
   { "dependencies": false, "target": "build"}
],

nx.json
"taskRunnerOptions"
->
"default"
->
"options"
,添加:

"parallel": 100

推理:

这需要在文档中进行一些搜索,但解决方案最终需要两件事:

  1. 并行值必须足够高。
  2. 任何依赖于其他项目的项目都不得等待其构建完成。

问题是 proj1 和 proj2 依赖于 proj3 和 proj4,并且默认情况下等待其

build
函数完成。但是,由于他们的构建调用具有
--watch
标志,因此无法完成构建调用,并且
dependsOn
从未实现。

"dependencies": false
中设置
"dependsOn"
允许调用构建而无需等待依赖项构建

来源:https://nx.dev/reference/project-configuration#examples

© www.soinside.com 2019 - 2024. All rights reserved.