使用 "preLaunchTasks" 并在 Visual Studio 代码中命名任务
Using "preLaunchTasks" and Naming a Task in Visual Studio Code
根据the documentation,可以在调试前启动程序:
To launch a task before the start of each debug session, set the preLaunchTask
to the name of one of the tasks specified in tasks.json.
我没有看到 "named" 任务的示例语法,但是 schema documentation 揭示了一个名为 taskName
的 属性。我尝试使用它来 link 我的 launch.json preLaunchTasks
来完成任务,但它没有用。当我启动我的程序时,Visual Studio 代码报告了这个错误:
Could not find a unique task 'launch-core'. Make sure the task exists and that it has a unique name.
我的自定义 "named" 任务看起来像这样:
{
"taskName": "launch-core",
"version": "0.1.0",
"command": "C:\utils\mystuff.exe",
// The command is a shell script
"isShellCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
}
然后我尝试将 属性 名称从 taskName
更改为 name
、based on this link。那也没用。
Intellisense 没有给出如何命名任务的建议。
有人知道如何在 tasks.json 文件中唯一命名任务吗?语法是什么? 属性 名字是什么?
最终,我想在启动我自己的 node.js 应用程序之前执行两个或三个 node.js 进程。例如,我想在我的应用程序启动到调试器之前启动以下三个应用程序:
sh -c 'cd ./manager/ && node manager.js'
sh -c 'cd ./adapter/ && node adapter.js'
sh -c 'cd ./core/ && node core.js'
如果我在 Windows 盒子上工作,我的任务可能看起来像这样:
{
"taskName": "core-launch",
"version": "0.1.0",
// The command is tsc. Assumes that tsc has been installed using npm install -g typescript
"command": "start",
// The command is a shell script
"isShellCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// args is the HelloWorld program to compile.
"args": [
"ACD-Manager",
"/B",
"/D",
"./manager/",
"node",
"manager.js"
]
}
以上任务使用cmd start
capability。我还不确定如何启动多个节点任务而不是一个,但由于这个任务命名问题,我什至无法启动一个任务。
如何在 tasks.json 文件中命名任务?
我只真正看到与 Gulp 有关的任务名称;我敢肯定还有其他人,但我没有太多见识。也许这可以让您从已有的开始?
所以,如果它仍然相关,或者如果有人发现这个线程有同样的问题,我刚刚弄清楚它是如何工作的:
在tasks.json中,你需要创建一个'tasks'数组 - 代码提示会帮助你with that - 它包含一个对象数组。在对象内部,您可以拥有 'taskName' 键值对。
示例:
{
"version": "0.1.0",
"command": "npm",
"isShellCommand": true,
"args": ["run-script", "webpack"],
"showOutput": "always",
"tasks": [
{
"taskName": "runwebpack",
"suppressTaskName": true
}
]
}
就我而言,在 运行 启动我的项目之前,我必须 运行 npm run-script webpack
命令。
在 launch.json 文件中,"preLaunchTask": "runwebpack"
现在可以工作了。
注意:suppressTaskName
在我的示例中是正确的。省略它或将其设置为 false 将导致 VS Code 在命令后附加 taskName
。
更通用的方法是这样的:
{
"version": "0.1.0",
"command": "npm",
"isShellCommand": true,
"args": ["run-script"],
"showOutput": "always",
"tasks": [
{ "taskName": "webpack" }
]
}
对于后一个示例,您可以将 tasks
数组与其他脚本一起扩展为 运行。
我的使用提示:npm 运行-script 从 package.json 文件中获取要执行的操作scripts
对象。
编辑:这适用于 VS Code 1.3.1
FWIW,我正在使用 VS Code 1.20.1,这就是我让 preLaunchTask 工作的方式:
在launch.json
中:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
...
"preLaunchTask": "npm: build",
}
]
}
在我的 package.json
:
{
...
"scripts": {
"build": "tsc"
...
}
}
对于版本 2.0.0 配置,您现在使用 label
而不是 taskName
。
package.json:
...
"scripts": {
"tsc": "tsc",
...
}
...
launch.json(我的源码在src
目录,tsc
编译到dist
目录):
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"preLaunchTask": "Compile",
"name": "Launch Program",
"program": "${workspaceFolder}/src/index.ts",
"outFiles": [
"${workspaceFolder}/dist/**/*.js"
],
"protocol": "inspector",
"sourceMaps": true
}
]
}
tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "Compile",
"type": "npm",
"script": "tsc",
"problemMatcher": []
}
]
}
题目是:
"Using “preLaunchTasks” and Naming a Task in Visual Studio Code
我需要定义 preLaunchTask***s***。
您可以使用 属性 描述的 here
配置多个任务
例如,您 tasks.json 中的复合任务:
{
"version": "2.0.0",
"tasks": [
{
"label": "Client Build",
"command": "gulp",
"args": ["build"],
"options": {
"cwd": "${workspaceRoot}/client"
}
},
{
"label": "Server Build",
"command": "gulp",
"args": ["build"],
"options": {
"cwd": "${workspaceRoot}/server"
}
},
{
"label": "Build",
"dependsOn": ["Client Build", "Server Build"]
}
]
}
您可以找到有关命名任务的更多信息here。
对于vscode 1.36.1 (1.36.1)
:
tasks.json
:
{
"version": "2.0.0",
"tasks": [
{
"label": "build:tsc",
"type": "npm",
"script": "build:tsc"
},
{
"label": "clean",
"type": "npm",
"script": "clean"
},
{
"label": "build",
"dependsOrder": "sequence",
"dependsOn": ["clean", "build:tsc"]
}
]
}
launch.json
:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/dist/main.js",
"preLaunchTask": "build",
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
"console": "integratedTerminal"
}
]
}
在运行宁node ${workspaceFolder}/dist/main.js
之前,preLaunchTask
首先会运行build
任务,其中包括两个子任务:clean
和build
。它会先运行clean
任务,然后运行build
任务。
您可以将任务的标签指定为preLaunchTask
选项。
根据the documentation,可以在调试前启动程序:
To launch a task before the start of each debug session, set the
preLaunchTask
to the name of one of the tasks specified in tasks.json.
我没有看到 "named" 任务的示例语法,但是 schema documentation 揭示了一个名为 taskName
的 属性。我尝试使用它来 link 我的 launch.json preLaunchTasks
来完成任务,但它没有用。当我启动我的程序时,Visual Studio 代码报告了这个错误:
Could not find a unique task 'launch-core'. Make sure the task exists and that it has a unique name.
我的自定义 "named" 任务看起来像这样:
{
"taskName": "launch-core",
"version": "0.1.0",
"command": "C:\utils\mystuff.exe",
// The command is a shell script
"isShellCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
}
然后我尝试将 属性 名称从 taskName
更改为 name
、based on this link。那也没用。
Intellisense 没有给出如何命名任务的建议。
有人知道如何在 tasks.json 文件中唯一命名任务吗?语法是什么? 属性 名字是什么?
最终,我想在启动我自己的 node.js 应用程序之前执行两个或三个 node.js 进程。例如,我想在我的应用程序启动到调试器之前启动以下三个应用程序:
sh -c 'cd ./manager/ && node manager.js'
sh -c 'cd ./adapter/ && node adapter.js'
sh -c 'cd ./core/ && node core.js'
如果我在 Windows 盒子上工作,我的任务可能看起来像这样:
{
"taskName": "core-launch",
"version": "0.1.0",
// The command is tsc. Assumes that tsc has been installed using npm install -g typescript
"command": "start",
// The command is a shell script
"isShellCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// args is the HelloWorld program to compile.
"args": [
"ACD-Manager",
"/B",
"/D",
"./manager/",
"node",
"manager.js"
]
}
以上任务使用cmd start
capability。我还不确定如何启动多个节点任务而不是一个,但由于这个任务命名问题,我什至无法启动一个任务。
如何在 tasks.json 文件中命名任务?
我只真正看到与 Gulp 有关的任务名称;我敢肯定还有其他人,但我没有太多见识。也许这可以让您从已有的开始?
所以,如果它仍然相关,或者如果有人发现这个线程有同样的问题,我刚刚弄清楚它是如何工作的:
在tasks.json中,你需要创建一个'tasks'数组 - 代码提示会帮助你with that - 它包含一个对象数组。在对象内部,您可以拥有 'taskName' 键值对。
示例:
{
"version": "0.1.0",
"command": "npm",
"isShellCommand": true,
"args": ["run-script", "webpack"],
"showOutput": "always",
"tasks": [
{
"taskName": "runwebpack",
"suppressTaskName": true
}
]
}
就我而言,在 运行 启动我的项目之前,我必须 运行 npm run-script webpack
命令。
在 launch.json 文件中,"preLaunchTask": "runwebpack"
现在可以工作了。
注意:suppressTaskName
在我的示例中是正确的。省略它或将其设置为 false 将导致 VS Code 在命令后附加 taskName
。
更通用的方法是这样的:
{
"version": "0.1.0",
"command": "npm",
"isShellCommand": true,
"args": ["run-script"],
"showOutput": "always",
"tasks": [
{ "taskName": "webpack" }
]
}
对于后一个示例,您可以将 tasks
数组与其他脚本一起扩展为 运行。
我的使用提示:npm 运行-script 从 package.json 文件中获取要执行的操作scripts
对象。
编辑:这适用于 VS Code 1.3.1
FWIW,我正在使用 VS Code 1.20.1,这就是我让 preLaunchTask 工作的方式:
在launch.json
中:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
...
"preLaunchTask": "npm: build",
}
]
}
在我的 package.json
:
{
...
"scripts": {
"build": "tsc"
...
}
}
对于版本 2.0.0 配置,您现在使用 label
而不是 taskName
。
package.json:
...
"scripts": {
"tsc": "tsc",
...
}
...
launch.json(我的源码在src
目录,tsc
编译到dist
目录):
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"preLaunchTask": "Compile",
"name": "Launch Program",
"program": "${workspaceFolder}/src/index.ts",
"outFiles": [
"${workspaceFolder}/dist/**/*.js"
],
"protocol": "inspector",
"sourceMaps": true
}
]
}
tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "Compile",
"type": "npm",
"script": "tsc",
"problemMatcher": []
}
]
}
题目是:
"Using “preLaunchTasks” and Naming a Task in Visual Studio Code
我需要定义 preLaunchTask***s***。
您可以使用 属性 描述的 here
配置多个任务例如,您 tasks.json 中的复合任务:
{
"version": "2.0.0",
"tasks": [
{
"label": "Client Build",
"command": "gulp",
"args": ["build"],
"options": {
"cwd": "${workspaceRoot}/client"
}
},
{
"label": "Server Build",
"command": "gulp",
"args": ["build"],
"options": {
"cwd": "${workspaceRoot}/server"
}
},
{
"label": "Build",
"dependsOn": ["Client Build", "Server Build"]
}
]
}
您可以找到有关命名任务的更多信息here。
对于vscode 1.36.1 (1.36.1)
:
tasks.json
:
{
"version": "2.0.0",
"tasks": [
{
"label": "build:tsc",
"type": "npm",
"script": "build:tsc"
},
{
"label": "clean",
"type": "npm",
"script": "clean"
},
{
"label": "build",
"dependsOrder": "sequence",
"dependsOn": ["clean", "build:tsc"]
}
]
}
launch.json
:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/dist/main.js",
"preLaunchTask": "build",
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
"console": "integratedTerminal"
}
]
}
在运行宁node ${workspaceFolder}/dist/main.js
之前,preLaunchTask
首先会运行build
任务,其中包括两个子任务:clean
和build
。它会先运行clean
任务,然后运行build
任务。
您可以将任务的标签指定为preLaunchTask
选项。