使用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 代码任务文档:
组:定义任务所属的组。在此示例中,它属于
test
组。可以通过从命令面板运行"运行测试任务"来执行属于测试组的任务。
dotnet build
任务成功了,那么另一个任务(也是build
组的一部分(是否也应该运行?我做错了什么?
问题是"运行测试任务"和"运行生成任务"不会执行该特定组中的所有任务。通常,您将获得一个下拉选择,以便选择要执行的任务。由于您已将其中一个任务指定为默认任务,因此将跳过选择,而是执行默认任务。
可以通过添加依赖项来解决此问题。举个例子:
{
"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 2
,Echo 2
将在执行Echo 1
之前执行。请注意,定义是一个列表,因此可以指定多个任务。在这种情况下,任务是并行执行的。
在您的情况下,将"dependsOn":["Compile/minify cms.scss"]
添加到主构建任务应执行这两个任务。
您可以使用复合任务。
下面的示例在调用"生成"任务时执行"客户端生成"和"服务器生成"任务。
{
"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"]
}
]
}
在package.json
中添加"gulp-load-plugins"插件
var gulpLoadPlugins = require('gulp-load-plugins'),
plugins = gulpLoadPlugins();
要了解有关该插件的更多信息,请参阅如何使用 Gulp 构建和开发网站
仔细检查您的设置是否启用了 Gulp 自动检测:
"gulp.autoDetect": "on"