如何 运行 在 VS Code 中构建多个任务?

How to run multiple tasks in VS Code on build?

使用 tasks.json 版本 2.0.0,我无法做到,当我构建我的应用程序时,多个任务同时 运行。我正在使用 gulp 进行 SCSS 编译,并且 运行 单独运行我的 Compile/minify cms.scss 任务工作正常,所以这不是任务本身的问题,只是 VS Code 的任务 运行纳尔。当我在 VS Code 中 Run Build Task 时,我的 gulp 任务不是 运行,即使它有 "group": "build" — 只有 dotnet 是。

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/HpsCoreWeb.csproj"
            ],
            "problemMatcher": "$msCompile",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "Compile/minify cms.scss",
            "type": "gulp",
            "task": "cms.scss:cms.min.css",
            "problemMatcher": "$node-sass",
            "group": "build"
        }
    ]
}

根据 VS Code Tasks documentation:

group: Defines to which group the task belongs. In the example, it belongs to the test group. Tasks that belong to the test group can be executed by running Run Test Task from the Command Palette.

dotnet build 任务成功了,那么另一个任务(也是 build 组的一部分)不应该也是 运行 吗?我做错了什么?

仔细检查您的设置是否启用了 Gulp 自动检测:

"gulp.autoDetect": "on"

问题是“运行 测试任务”和“运行 构建任务”没有执行该特定组中的所有任务。通常你会得到一个下拉选项,这样你就可以选择要执行的任务。由于您已将其中一项任务指定为默认任务,因此将跳过选择,而是执行默认任务。

您可以通过添加依赖项来解决这个问题。举个例子:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Echo 1",
            "command": "echo",
            "type": "shell",
            "args": [ "echo1" ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "dependsOn":["Echo 2"]
        },
        {
            "label": "Echo 2",
            "type": "shell",
            "command": "echo",
            "args": [ "echo2" ],
            "group": "build"
        }
    ]
}

由于Echo 1依赖于Echo 2Echo 2会先于Echo 1执行。请注意,定义是一个列表,因此可以指定多个任务。在那种情况下,任务是并行执行的。

在你的情况下,将 "dependsOn":["Compile/minify cms.scss"] 添加到你的主要构建任务应该执行这两个任务。

package.json

中添加'gulp-load-plugins'插件
var gulpLoadPlugins = require('gulp-load-plugins'),
plugins = gulpLoadPlugins();

要了解有关该插件的更多信息,请参阅 How To Build And Develop Websites With Gulp

您可以使用 Compound Tasks.

以下示例在调用“构建”任务时执行“客户端构建”和“服务器构建”任务。

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Client Build",
      "command": "gulp",
      "args": ["build"],
      "options": {
        "cwd": "${workspaceFolder}/client"
      }
    },
    {
      "label": "Server Build",
      "command": "gulp",
      "args": ["build"],
      "options": {
        "cwd": "${workspaceFolder}/server"
      }
    },
    {
      "label": "Build",
      "dependsOn": ["Client Build", "Server Build"]
    }
  ]
}