Использование "preLaunchTasks" и "Именование задачи в коде Visual Studio"
Согласно документации, можно запустить программу перед отладкой:
Чтобы запустить задачу перед началом каждого сеанса отладки, preLaunchTask
имя одной из задач, указанных в tasks.json.
Я не видел пример синтаксиса "именованной" задачи, но в документации схемы раскрывается свойство с именем taskName
. Я попытался использовать это, чтобы связать мои задачи preLaunchTasks
Json preLaunchTasks
с задачей, но это не сработало. Когда я запустил свою программу, Visual Studio Code сообщил об этой ошибке:
Не удалось найти уникальную задачу 'launch-core'. Убедитесь, что задача существует и имеет уникальное имя.
Моя пользовательская "именованная" задача выглядела примерно так:
{
"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
, основываясь на этой ссылке. Это тоже не сработало.
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"
]
}
Вышеуказанная задача с использованием возможности start
cmd. Я еще не уверен, как заставить несколько задач узла запускаться вместо одной, но я не могу даже запустить одну задачу из-за этой проблемы с именами задач.
Как я могу назвать задачу в файле tasks.json?
Ответы
Ответ 1
Итак, если это все еще актуально, или если кто-то находит этот поток с той же проблемой, я просто понял, как это работает:
В tasks.json вам нужно создать массив 'задач - подсказка кода поможет вам в этом, - который содержит массив объектов. Внутри объекта у вас может быть пара ключей ключа '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-код добавит команду taskName
после команды.
Более общий подход будет примерно таким:
{
"version": "0.1.0",
"command": "npm",
"isShellCommand": true,
"args": ["run-script"],
"showOutput": "always",
"tasks": [
{ "taskName": "webpack" }
]
}
В последнем примере вы можете расширить массив tasks
другими сценариями для запуска.
Подсказка для моего использования: npm run- script выбирает, что делать из package.json файла scripts
.
Изменить: это работает с VS Code 1.3.1
Ответ 2
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"
...
}
}
Ответ 3
Для конфигурации версии 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": []
}
]
}
Ответ 4
Я действительно видел только имя задачи, используемое по отношению к Gulp; Я уверен, что есть другие, но я ничего не понимаю. Возможно, это может помочь вам начать с того, что у вас уже есть?
Запустить задачу перед запуском в VSCODE
Ответ 5
Название вопроса:
"Использование" preLaunchTasks "и именование задачи в коде Visual Studio
Мне нужно было определить preLaunchTask *** s ***.
Вы можете настроить несколько задач, используя описанное здесь свойствоависимый
Например, составная задача в вашем 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"]
}
]
}
Вы можете найти больше информации о задачах именования здесь.