Чтобы запускать одну и ту же команду проекта из VS Code на Mac, определите её как задачу рабочей области в .vscode/tasks.json. Затем запускайте её из палитры команд или меню «Терминал» вместо повторного ввода в терминале. В этом руководстве в качестве примера используется npm test; замените её командой, которую уже поддерживает ваш проект. Для задач VS Code требуется открытая папка рабочей области, поэтому сначала откройте папку проекта в VS Code. Visual Studio Code: Integrate with External Tools via Tasks
Создайте файл задач в проекте
В VS Code откройте палитру команд с помощью Shift+Command+P, выполните Tasks: Configure Task и выберите Create tasks.json file from template, если VS Code предлагает такой вариант. Для создания собственной задачи выберите Others. Если файл tasks.json уже существует, откройте и отредактируйте его, вместо того чтобы создавать второй. Файл должен находиться в папке проекта .vscode; его фиксация в репозитории проекта сделает задачу доступной для коллег, использующих VS Code. Visual Studio Code: Integrate with External Tools via Tasks
Для этого примера поместите следующую конфигурацию в .vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "Run project tests",
"type": "shell",
"command": "npm",
"args": ["test"],
"options": {
"cwd": "${workspaceFolder}"
},
"presentation": {
"reveal": "always",
"panel": "dedicated"
}
}
]
}
Метка задачи (label) — это имя, которое вы будете выбирать в VS Code. Здесь command и args описывают команду на примере исполняемого файла npm с последующим аргументом test. Измените их в соответствии с существующей командой вашего проекта: например, укажите утилиту командной строки и её аргументы или существующий скрипт. Задача не устанавливает зависимости, не создает скрипт проекта и не определяет, что должна делать команда. Сначала ознакомьтесь с документацией или скриптами самого проекта. Параметр cwd задает рабочую директорию — папку, открытую как рабочая область; это важно, когда команда ожидает найти файлы проекта относительно этой папки. Visual Studio Code: Integrate with External Tools via Tasks
Запустите её снова через интерфейс Mac
Сохраните tasks.json. Откройте палитру команд с помощью Shift+Command+P, выполните Tasks: Run Task и выберите Run project tests. Вы также можете использовать меню Терминал > Запустить задачу… (Terminal > Run Task). После завершения задачи повторите эти действия и выберите ту же метку. Настроенная задача выполняется во встроенном терминале VS Code. Visual Studio Code: Integrate with External Tools via Tasks
В этом примере параметр reveal: always выводит панель терминала на передний план при выполнении задачи. Параметр panel: dedicated повторно использует терминал для этой задачи при последующих запусках, сохраняя её вывод отдельно от других задач. Чтобы вывод оставался в фоновом режиме, установите reveal в значение never; тогда для просмотра терминала вам потребуется выводить его панель на передний план самостоятельно. Эти параметры влияют только на отображение, а не на поведение команды или успешность её выполнения. Visual Studio Code: Integrate with External Tools via Tasks
Согласуйте конфигурацию со способом запуска вашей команды
Используйте type: shell, если выполнение команды зависит от поведения оболочки. Для команды, которая должна запускать исполняемый файл напрямую, параметр type: process позволяет избежать интерпретации оболочкой. В документации VS Code описаны оба типа задач; выбирайте подходящий в зависимости от используемой команды и аргументов. При работе с задачами типа shell для пробелов и специальных символов может потребоваться экранирование кавычками. Разделение исполняемого файла и аргументов, как показано в примере, помогает избежать объединения всей командной строки в одну строку, хотя правила экранирования конкретной оболочки по-прежнему применяются там, где это необходимо. Visual Studio Code: Integrate with External Tools via Tasks
Если команда должна запускаться в подпапке, измените cwd на путь внутри ${workspaceFolder}, например ${workspaceFolder}/client. Переменная ${workspaceFolder} указывает на папку, открытую в VS Code, а пути в macOS используют прямой слеш (/). Если вы используете переменную в задаче типа shell, помните, что подстановка не добавляет кавычки автоматически; пути с пробелами могут требовать соответствующего экранирования кавычками для используемой оболочки. Visual Studio Code: Variables Reference
Если задача работает в окне «Терминала», но завершается с ошибкой в VS Code, убедитесь, что исполняемый файл доступен в среде, используемой VS Code, а выбранная рабочая директория содержит ожидаемые файлы. VS Code позволяет настроить оболочку автоматизации отдельно через terminal.integrated.automationProfile.* или задать специфичную для задачи оболочку через options.shell; задача не гарантирует совпадения среды с уже открытым интерактивным терминалом. Visual Studio Code: Integrate with External Tools via Tasks
Задача — это воспроизводимый способ вызова команды и просмотра её вывода в терминале. Она не создает команду проекта, не исправляет завершающуюся сбоем команду и не определяет автоматически каждую используемую проектом команду. Начните с команды, которая уже работает для этого проекта, а затем настройте её метку, аргументы, рабочую директорию и отображение в терминале в соответствии со своим рабочим процессом.
Источники
Integrate with External Tools via Tasks — Visual Studio Code
Variables Reference — Visual Studio Code