Відповіді:
launch.json
(всередині папки .vscode)launch.json
(див. Нижче)tasks.json
(всередині папки .vscode)tasks.json
(див. Нижче)launch.json for angular/cli >= 1.3
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Chrome",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200/#",
"webRoot": "${workspaceFolder}"
},
{
"name": "Attach Chrome",
"type": "chrome",
"request": "attach",
"url": "http://localhost:4200/#",
"webRoot": "${workspaceFolder}"
},
{
"name": "Launch Chrome (Test)",
"type": "chrome",
"request": "launch",
"url": "http://localhost:9876/debug.html",
"webRoot": "${workspaceFolder}"
},
{
"name": "Launch Chrome (E2E)",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/node_modules/protractor/bin/protractor",
"protocol": "inspector",
"args": ["${workspaceFolder}/protractor.conf.js"]
}
]
}
tasks.json for angular/cli >= 1.3
{
"version": "2.0.0",
"tasks": [
{
"identifier": "ng serve",
"type": "npm",
"script": "start",
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"identifier": "ng test",
"type": "npm",
"script": "test",
"problemMatcher": [],
"group": {
"kind": "test",
"isDefault": true
}
}
]
}
launch.json
launch.json
(див. Нижче)ng serve
)launch.json for angular/cli >= 1.0.0-beta.32
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}",
"sourceMaps": true,
"userDataDir": "${workspaceFolder}/.vscode/chrome",
"runtimeArgs": [
"--disable-session-crashed-bubble"
]
},
{
"name": "Attach Chrome",
"type": "chrome",
"request": "attach",
"url": "http://localhost:4200",
"port": 9222,
"webRoot": "${workspaceFolder}",
"sourceMaps": true
}
]
}
launch.json for angular/cli < 1.0.0-beta.32
{
"version": "0.2.0",
"configurations": [
{
"name": "Lunch Chrome",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}/src/app",
"sourceMaps": true,
"sourceMapPathOverrides": {
"webpack:///./~/*": "${workspaceFolder}/node_modules/*",
"webpack:///./src/*": "${workspaceFolder}/src/*"
},
"userDataDir": "${workspaceFolder}/.vscode/chrome",
"runtimeArgs": [
"--disable-session-crashed-bubble"
]
},
{
"name": "Attach Chrome",
"type": "chrome",
"request": "attach",
"url": "http://localhost:4200",
"port": 9222,
"webRoot": "${workspaceFolder}/src/app",
"sourceMaps": true,
"sourceMapPathOverrides": {
"webpack:///./~/*": "${workspaceFolder}/node_modules/*",
"webpack:///./src/*": "${workspaceFolder}/src/*"
}
}
]
}
NG Live Development Server
а потім запустити Chrome
лише одним F5
клацанням миші?
launch.json
і tasks.json
що тут робити. Як я зрозумів, launch.json
це запустити сервер вузлів і прослухати порт 8080, а також tasks.json
інструкція використовувати npm
та виконувати команду ng serve
для запуску програми.
Схоже, команда VS Code зберігає рецепти налагодження.
https://github.com/Microsoft/vscode-recipes/tree/master/Angular-CLI
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Chrome with ng serve",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200",
"webRoot": "${workspaceRoot}"
},
{
"name": "Launch Chrome with ng test",
"type": "chrome",
"request": "launch",
"url": "http://localhost:9876/debug.html",
"webRoot": "${workspaceRoot}"
},
{
"name": "Launch ng e2e",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/node_modules/protractor/bin/protractor",
"protocol": "inspector",
"args": ["${workspaceRoot}/protractor.conf.js"]
}
]
}
Є два різні способи зробити це. Ви можете запустити новий процес або приєднати до вже існуючого.
Ключовим моментом в обох процесах є одночасне запуску сервера розробників webpack та відладчика VSCode .
У свій launch.json
файл додайте таку конфігурацію:
{
"version": "0.2.0",
"configurations": [
{
"name": "Angular debugging session",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}"
}
]
}
Запустіть сервер розробників Webpack від Angular CLI, виконавши npm start
Для цього вам потрібно запустити Chrome у режимі налагодження з відкритим портом (у моєму випадку це буде 9222
):
Мак:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
Windows:
chrome.exe --remote-debugging-port=9222
launch.json
файл буде виглядати наступним чином:
{
"version": "0.2.0",
"configurations": [
{
"name": "Chrome Attach",
"type": "chrome",
"request": "attach",
"port": 9222,
"url": "http://localhost:4200/",
"webRoot": "${workspaceFolder}"
}
]
}
npm start
У цьому випадку налагоджувач додається до існуючого процесу Chrome замість запуску нового вікна.
Я написав власну статтю, де описав цей підхід ілюстраціями.
Проста інструкція, як налаштувати налагоджувач для Angular у VSCode
chrome.exe --remote-debugging-port=9222
Чи є альтернатива для одноразової конфігурації
Це детально пояснено на сайті Visual Studio Code: https://code.visualstudio.com/docs/nodejs/angular-tutorial
Можна використовувати цю конфігурацію:
{
"version": "0.2.0",
"configurations": [
{
"name": "ng serve",
"type": "chrome",
"request": "launch",
"preLaunchTask": "npm: start",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
}
]
}
Ось трохи легше рішення, працює з Angular 2+ (я використовую Angular 4)
Також додано налаштування для Express Server, якщо ви запускаєте стек MEAN.
{
// Use IntelliSense to learn about possible Node.js debug attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch Angular Client",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200",
"runtimeArgs": [
"--user-data-dir",
"--remote-debugging-port=9222"
],
"sourceMaps": true,
"trace": true,
"webRoot": "${workspaceRoot}/client/",
"userDataDir": "${workspaceRoot}/.vscode/chrome"
},
{
"type": "node",
"request": "launch",
"name": "Launch Express Server",
"program": "${workspaceRoot}/server/bin/www",
"outFiles": [
"${workspaceRoot}/out/**/*.js"
]
}
]
}
@Asesjix відповідь дуже грунтовний, але, як дехто зазначав, для запуску ng serve
та запуску програми Angular у Chrome все ж потрібно кілька взаємодій . Це я працював одним натисканням кнопки, використовуючи наступну конфігурацію. Основна відмінність від відповіді @ Asesjix полягає в тому, що тип завдання зараз є, shell
а виклики команд додаються start
раніше, ng serve
щоб вони ng serve
могли існувати у власному процесі і не блокувати запуск відладчика:
task.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "ng serve",
"type": "shell",
"command": "\"start ng serve\""
},
{
"label": "ng test",
"type": "shell",
"command": "\"start ng test\"",
}
]
}
start.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch in Chrome",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}",
"preLaunchTask": "ng serve"
}
]
}
У моєму випадку я не використовував оригінальне дерево папок проекту Angular, і знав, що щось не так webRoot
/ {workspaceFolder}
бітом але всі мої експерименти не дали результату. Отримав підказку з іншої відповіді, на яку я зв’яжу, якщо знову знайду її.
Що мені допомогло - знайти вміст змінної {workspaceFolder}
під час виконання, а потім змінити її на розташування моєї папки "src", під якою у вас є "app / *". Щоб знайти його, я додав аpreLaunchTask
у свій файл start.json і завдання вивести значення {workspaceFolder}
.
start.json , який з’являється після встановлення налагоджувача Chrome
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}/src/newProjectRoot/",
"preLaunchTask": "Echo values" //Just to see what the cryptic vs code variables actually are https://code.visualstudio.com/docs/editor/variables-reference
}
]
}
Tasks.json за замовчуванням не присутній. Натисніть Ctrl + Shift + p, і я думаю, що це називається "створити завдання для іншої команди" або щось подібне. Не можу бачити його після створення task.json. Ви також можете просто створити файл у тому самому місці, що і start.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Echo values",
"command": "echo",
"args": ["${env:USERNAME}", "workspaceFolder = ${workspaceFolder}"],
"type": "shell"
}
]
}
Як тільки я знав значення $ {workspaceFolder}, я виправив його, щоб вказати на свою папку src у моєму новому дереві проектів, і все працювало. Налагодження потрібно ng serve
запускати або як завдання перед запуском, або як частина збірки (приклади вище) або в командному рядку.
Ось посилання на всі змінні, які ви можете використовувати: