当构建器使用不同的选项时,如何在 nrwl nx 中使用单个受影响的构建命令

Posted

技术标签:

【中文标题】当构建器使用不同的选项时,如何在 nrwl nx 中使用单个受影响的构建命令【英文标题】:how to use a single affected build command in nrwl nx when builders use different options 【发布时间】:2020-12-14 15:04:16 【问题描述】:

我有一个带有角度和节点构建器的项目(@angular-builders/custom-webpack:browser 和 @nrwl/node:build)。如果我尝试运行包含对一个有效但对另一个无效的参数的构建命令,我会得到

nx affected:build --aot

ng 运行服务器:build --aot

未知选项:'--aot'

角度构建器可以接受该选项,但节点构建器不能。我已经使用 excludes 运行了受影响的:build 命令两次,但这并不能很好地扩展,因为我添加了其他类型的构建器。

nx affected:build --aot --exclude node-js-app

nx affected:build --exclude angular-js-app1, angular-js-app2

有没有办法使用受影响的:跨角度和节点项目构建并能够使用角度特定标志?

【问题讨论】:

你有没有找到更清洁的解决方案? 【参考方案1】:

不确定这是最好的还是唯一的解决方案,但这是我最终用来解决此问题的方法。

我在 angular.json 中配置了一个custom run command,我在其中硬编码了每个应用程序或库所需的特定参数。 您不需要全部硬编码(请参阅配置示例),但我们的案例更容易做到。

现在要使用受影响的 nx,您可以定位新创建的 ci-build 命令:nx affected --target=ci-build --base=origin/master --args="--configuration=production"

...
   "my-angular-app": 
      "architect": 
        "ci-build": 
          "builder": "@nrwl/workspace:run-commands",
          "options": 
            "commands": [
                "ng build my-angular-app --configuration=args.configuration --single-bundle --bundleStyles false --keepStyles false"
            ]
          
        ,
...
   "my-node-lib": 
      "architect": 
        "ci-build": 
          "builder": "@nrwl/workspace:run-commands",
          "options": 
            "commands": [
                "ng build my-node-lib --configuration=args.configuration"
            ]
          
        
...

【讨论】:

这是个好主意,谢谢。我还没有找到任何解决方案,我们目前只是使用 --excludes 运行多个命令

以上是关于当构建器使用不同的选项时,如何在 nrwl nx 中使用单个受影响的构建命令的主要内容,如果未能解决你的问题,请参考以下文章

在 Nrwl/Nx 工作区中包含一些库的包

将 nx 与 angular.json 一起使用时使用哪个构建器

如何强制 nrwl nx 尊重标签更新?

Nrwl Nx 构建节点项目仅转译 main.ts

Nrwl Nx:不同的版本号和库

如何从库中导入组件(在 nrwl/nx 中使用 Angular)