首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在nx服务之前执行nx构建?

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

Stack Overflow用户
提问于 2020-06-24 01:29:23
回答 2查看 835关注 0票数 2

想知道作为nx serve的先决条件执行nx build命令的正确方法是什么

例如,在我的workspace.json中的这个示例中:

代码语言:javascript
复制
"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方式”是什么?

EN

回答 2

Stack Overflow用户

发布于 2020-06-25 21:31:16

为了达到你想要的效果,你可以定义一个新的目标:

代码语言:javascript
复制
  "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

因此,可能希望有一个长时间运行的进程来执行重建。

票数 4
EN

Stack Overflow用户

发布于 2021-12-09 21:42:47

您应该能够使用waitUntilTargets和抽象化构建调用的运行命令来实现这一点

代码语言:javascript
复制
    "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文件中设置了这些目标。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62540504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档