VS Code: задачи (Tasks)
Tasks в VS Code — настраиваемые команды, запускаемые через интерфейс редактора без набора в терминале, с поддержкой сборки, тестов и произвольных скриптов.
Зачем нужно
Tasks позволяют запускать npm run build, тесты или линтер одним нажатием клавиши или горячей кнопкой, без запоминания длинных команд. Результат выводится в панели Output, а ошибки компилятора — в Problems с переходом к нужной строке. Командные задачи в .vscode/tasks.json стандартизируют рабочий процесс.
Где используется
- Сборка TypeScript/webpack без ручного
npm run build - Запуск тестов через UI с
Ctrl+Shift+B - Задача-зависимость: сначала build, потом deploy
- Автозапуск сервера при открытии проекта
.vscode/tasks.json()
{
"version": "2.0.0",
"tasks": [
{
"label": "Build TypeScript",
"type": "npm",
"script": "build",
"group": {
"kind": "build",
"isDefault": true // ← запускается по Ctrl+Shift+B
},
"presentation": {
"reveal": "always",
"panel": "shared"
},
"problemMatcher": "$tsc" // парсим ошибки TypeScript → Problems
},
{
"label": "Run Tests",
"type": "npm",
"script": "test",
"group": {
"kind": "test",
"isDefault": true
},
"problemMatcher": "$jest"
},
{
"label": "Dev Server",
"type": "shell",
"command": "npm run dev",
"isBackground": true, // фоновый процесс
"presentation": {
"reveal": "always",
"panel": "dedicated" // отдельная вкладка
},
"problemMatcher": {
"owner": "custom",
"pattern": {"regexp": "^$"},
"background": {
"activeOnStart": true,
"beginsPattern": "Starting",
"endsPattern": "ready"
}
}
},
{
"label": "Lint and Fix",
"type": "shell",
"command": "npx eslint . --ext .ts,.tsx --fix",
"presentation": { "reveal": "silent" },
"problemMatcher": "$eslint-stylish"
},
{
"label": "Docker: Up",
"type": "shell",
"command": "docker compose up -d",
"presentation": { "reveal": "always" }
}
]
}
Горячие клавиши
Ctrl+Shift+B — запустить default build задачу
Terminal → Run Task → выбрать задачу из списка
Ctrl+Shift+P → Tasks: Run Task
Зависимости между задачами
{
"label": "Build and Test",
"dependsOn": ["Build TypeScript", "Run Tests"],
"dependsOrder": "sequence", // или "parallel"
"group": "build"
}
Problem Matchers
// Встроенные matchers для популярных инструментов
"problemMatcher": "$tsc" // TypeScript
"problemMatcher": "$tsc-watch" // TypeScript в watch-режиме
"problemMatcher": "$eslint-stylish" // ESLint
"problemMatcher": "$jest" // Jest
// Без парсинга ошибок
"problemMatcher":
Частые ошибки
- Нет
"group": { "kind": "build", "isDefault": true }—Ctrl+Shift+Bне работает - Интерактивные команды (npm create, prompts) в задачах — зависают без ввода
- Не указан
"isBackground": trueдля серверных процессов — задача считается завершённой сразу - Задачи с фоновыми процессами без
problemMatcher.background— VS Code не знает, когда сервер готов
Связанные темы
- _MOC Инструменты
- VS Code -- workspace настройки
- VS Code -- отладчик (Debugger)
- VS Code -- встроенный терминал