Посмотрев на это некоторое время, кажется, что нет никакого чистого способа убить задачу в VS Code, которая была запущена как часть preBuildTask
.Это задача сборки, и сама задача отладки, кажется, отделена от этого.Поскольку сам PID отладки нацелен на Chrome, между ними есть странное разделение.
Итак, давайте перебьем его.
Во-первых, нам нужно, чтобы наш начальный ng serve
работал какдочерний процесс, поэтому другая задача не будет жаловаться на первую задачу, связанную с терминалом.Это задание сработало для меня:
{
"version": "2.0.0",
"tasks": [
{
"label": "serve",
"command": "ng serve",
"isBackground": true,
"type": "shell",
"presentation": {
"reveal": "always"
},
"problemMatcher": {
"fileLocation": "relative",
"background": {
}
}
}
]
}
Обратите внимание на свойство isBackground
.Это будет порождать любые будущие задачи в их собственной оболочке.presentation
равно reveal: always
, поэтому мы можем видеть вывод CLI.Мы можем получить причудливую информацию о проблемах CLI с помощью процесса отладки в problemMatcher
, но давайте забудем об этом сейчас.
Теперь давайте сделаем задачу kill
.Вместо того, чтобы работать с VS Code, чтобы найти начальную порожденную задачу, давайте сделаем это через нашу ОС.Теперь это сильно зависит от , какую ОС и , какую оболочку вы используете (оболочки могут быть настроены для задачи через свойство shell
).
Нам нужно найтиPID ng serve
оболочки и отправьте его на большой компьютер в небе.Мы можем искать PID, подключенный к локальному порту, который обслуживается, и я по умолчанию принимаю 4200.
Пример CMD команда:
for /F "tokens=1,2,3,4,5" %A in ('"netstat -a -n -o | find 4200""') DO ('"Taskill /PID %E /F"')
ПримерКоманда bash / terminal (как обычно, проще):
[sudo] lsof -ti:4200 | xargs kill
Затем просто создайте с помощью команды задачу kill
и добавьте ее в postDebugTask
:
{
"label": "kill",
"command": "lsof -ti:4200 | xargs kill",
"type": "shell",
}
Если вы столкнетесь с правами доступа, вы, вероятно, сможете это исправить, запустив VS Code от имени администратора или указав путь к .exe, где у вас уже есть права администратора.Опять же, зависит от вашей оболочки и ОС.