想知道作为nx serve的先决条件执行nx build命令的正确方法是什么
例如,在我的workspace.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方式”是什么?
发布于 2020-06-25 21:31:16
为了达到你想要的效果,你可以定义一个新的目标:
"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
}
}
}Run commands允许您并行或按顺序调用任意数量的命令或shell脚本。你可以阻止某些输出出现,等等。
在您的示例中,看起来您有一个自定义构建器。因此,您还可以扩展构建器以在开始提供服务之前调用构建目标。如果您多次使用同一个服务构建器,这可能会更好。
Nx没有一种“面向方面”的方法来装饰目标。主要原因是它对基本场景有效,但对任何复杂场景都不起作用。例如,在您的情况下,您可能希望查看文件并重新构建项目的所有dep。像这样:https://github.com/nrwl/nx-incremental-large-repo/blob/master/tools/scripts/watch.js
因此,可能希望有一个长时间运行的进程来执行重建。
发布于 2021-12-09 21:42:47
您应该能够使用waitUntilTargets和抽象化构建调用的运行命令来实现这一点
"build-foo": {
"executor": "@nrwl/workspace:run-commands",
"options": {
"commands": [
{
"command": "nx build foo --with-deps"
}
],
"readyWhen": "Put text here you will see when build is complete"
}
},
"serve": {
"executor": "@nrwl/node:execute",
"options": {
"buildTarget": "app:build",
"waitUntilTargets": ["app:build-foo"]
}
},我不清楚这是不是一种新的语法,因为你用来声明目标的设置不是我现在看到的。我在应用程序的project.json文件中设置了这些目标。
https://stackoverflow.com/questions/62540504
复制相似问题