将目标作为依赖项传入,并确保它们输出有用且有意义的内容供下一个目标使用



我正试图获得一个插件使用run-commands,我希望它运行并执行一个依赖的任务,并将结果传递给我的命令。在这种情况下,我想有一个依赖的目标启动一个web服务器,并保持它的运行。

我已经尝试执行以下操作,nx graph显示了正确的DAG,但我没有看到我想要的输出。

"executor": "nx:run-commands",
"options": {
"command": "./my-cli-tool --arg={frontendApp:serve}"
},
"dependsOn": [
"frontendApp:serve"
]

我知道在像bazel这样的单一工具中,传递像//frontendApp:serve这样的目标会做我在这里所期望的,所以我猜应该有一种方法可以在nx中做到这一点。

更新:帮助调试。

如果依赖项正在运行,则它以静默方式失败。我可以单独运行它,例如npx nx run frontendApp:serve。我看不到端口启动和被占用,所以如果有什么事情发生,它会悄无声息地发生。

dependsOn配置看起来有点不同。在文档中:

https://nx.dev/reference/project-configuration取决于

基本上,您需要有一个本地目标来调用其他项目中的目标。

{
"foo": {
"executor": "nx:run-commands",
"options": {
"command": "./my-cli-tool --arg={frontendApp:serve}"
},
"dependsOn": ["serve"]
},
"serve": {
"executor": "nx:run-commands",
"options": {
"command": "nx run frontendApp:serve"
}
}
}

另一个选择是使用Angular DevKit的allOfconcat执行器来一次运行多个东西:

"serve-with-graphql": {
"executor": "@angular-devkit/architect:allOf",
"options": {
"targets": [
{
"target": "web:serve"
},
{
"target": "graphql:dev-server"
}
]
}
},

https://github.com/angular/angular-cli/blob/main/packages/angular_devkit/architect/builders/builders.json L14-L23

  • allOf同时运行每个目标
  • concat连续运行

相关内容

最新更新