很好奇执行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方法”是什么?
答案 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
因此,可能需要长时间运行才能进行重建。