在nx服务之前如何执行nx构建?

时间:2020-06-23 17:29:23

标签: nrwl-nx

很好奇执行nx build命令作为nx serve的先决条件的正确方法是什么?

例如,在此示例中,来自我的工作空间.json:

"foo": {
  "root": "apps/foo",
  "sourceRoot": "apps/foo/src",
  "projectType": "application",
  "prefix": "foo",
  "schematics": {},
  "architect": {
    "build": {
      "builder": "./tools/builders/foo:build",
      "options": {}
    },

    "serve": {
      "builder": "./tools/builders/foo:serve",
      "options": {}
    }
  }
},

当我运行nx serve foo时,我希望它自动调用nx build foo --with-deps

执行此操作的“ nx方法”是什么?

1 个答案:

答案 0 :(得分:0)

要实现您想要的目标,可以定义一个新目标:

  "architect": {
    "build": {
      "builder": "./tools/builders/foo:build",
      "options": {}
    },

    "base-serve": {
      "builder": "./tools/builders/foo:serve",
      "options": {}
    },

    "serve": {
      "builder": "@nrwl/workspace:run-commands",
      "options": {
        "commands": [
           "nx build foo --with-deps",
           "nx base-serve foo"
        ],
        "parallel": false        
      }       
    }
  }

运行命令使您可以并行或顺序调用任意数量的命令或shell脚本。您可以阻止某些输出出现,等等。

对于您而言,您似乎拥有一个自定义生成器。因此,您还可以扩展构建器以在开始提供服务之前调用构建目标。如果您多次使用同一服务生成器,那可能会更好。

Nx没有装饰目标的“面向方面”的方式。这样做的主要原因是它可以在基本情况下工作,但不适用于任何复杂的工作。例如,在这种情况下,您可能需要监视文件并重建项目的所有部门。像这样:https://github.com/nrwl/nx-incremental-large-repo/blob/master/tools/scripts/watch.js

因此,可能需要长时间运行才能进行重建。