Полная настройка Visual Studio Code под JavaScript
Настройка Visual Studio Code для JavaScript
Как организовать базовую среду для разработки на JavaScript в VS Code?
Основной способ подготовки редактора включает установку набора расширений и конфигурацию через файл settings.json. Это позволяет единообразно настроить линтинг, форматирование и отладку для любого проекта.
Сначала устанавливаются расширения:
ESLint (dbaeumer.vscode-eslint)
Prettier (esbenp.prettier-vscode)
Debugger for Chrome (msjsdiag.debugger-for-chrome) или Debugger for Edge
Node.js Extension Pack (ms-vscode.node-extension-pack)
подсветка js (подсветка синтаксиса javascript)
После установки открывается палитра команд (Ctrl+Shift+P), выбирается Preferences: Open Settings (JSON). В файл settings.json добавляются параметры:
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact"],
"prettier.singleQuote": true,
"prettier.trailingComma": "all"
}
Js editor (редакторы кода для javascript)
Эти настройки включают автоматическое форматирование при сохранении и исправление ошибок ESLint. Для каждого проекта отдельно создаётся файл .eslintrc.json с правилами:
{
"env": { "browser": true, "es2021": true, "node": true },
"extends": ["eslint:recommended", "prettier"],
"parserOptions": { "ecmaVersion": "latest", "sourceType": "module" }
}
Vscode js (настройка visual studio code для javascript)
Как запустить Node.js приложение под отладчиком?
Создаётся конфигурация в .vscode/launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/index.js",
"skipFiles": ["/**"]
}
]
}
После сохранения можно запустить отладку клавишей F5. При возникновении проблем проверяется версия Node.js (node -v) и пути в launch.json.
Вариант: настройка через графический интерфейс Settings
Вместо редактирования JSON можно использовать вкладку File > Preferences > Settings. В поиске вводятся названия параметров (например, “format on save”), и значения изменяются через UI. Этот способ удобен для новичков, но менее гибок при переносе конфигурации между проектами.
Проблема: настройки из UI могут перезаписываться при обновлении VS Code. Решение: сохранять основные параметры в workspace-настройки (файл .vscode/settings.json), которые имеют приоритет над пользовательскими.
Вариант: использование конфигурационных файлов проекта (.eslintrc, .prettierrc)
Каждый проект может иметь собственные файлы с правилами. Например, для Prettier создаётся .prettierrc:
{
"semi": true,
"singleQuote": true,
"tabWidth": 2
}
Такие файлы автоматически подхватываются расширениями. Это позволяет командам разработчиков иметь единые настройки в репозитории.
Конфликт между настройками ESLint и Prettier может приводить к двойным исправлениям. Решение: установить пакет eslint-config-prettier и добавить его в extends, чтобы отключить конфликтующие правила ESLint.
Вариант: настройка задач (tasks.json) для автоматизации сборки
Tasks позволяют запускать npm-скрипты из редактора. Пример .vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "build",
"problemMatcher": ["$tsc"],
"label": "npm: build",
"group": { "kind": "build", "isDefault": true }
}
]
}
Задача вызывается через Terminal > Run Task.
Если задача не видит установленные в системе пакеты, следует проверить наличие package.json и правильность написания имени скрипта.
Вариант: использование Dev Containers для изолированной среды
Расширение Dev Containers (ms-vscode-remote.remote-containers) позволяет запускать VS Code внутри Docker контейнера. В корне проекта создаётся папка .devcontainer с файлами devcontainer.json и Dockerfile. Это даёт одинаковое окружение всем участникам команды.
// .devcontainer/devcontainer.json
{
"name": "Node.js",
"build": { "dockerfile": "Dockerfile" },
"extensions": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode"],
"postCreateCommand": "npm install",
"forwardPorts": [3000]
}
Возможная ошибка: контейнер не запускается из-за отсутствия Docker. Решение: предварительно установить Docker Desktop и убедиться, что он работает.
Расширенные примеры конфигураций и кода
1. Многопроцессная отладка Node.js и клиентской части
Для одновременной отладки сервера и клиента (например, React + Express) требуется комбинированная конфигурация в launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Server",
"program": "${workspaceFolder}/server/index.js",
"cwd": "${workspaceFolder}/server",
"skipFiles": ["/**"]
},
{
"type": "chrome",
"request": "launch",
"name": "Client",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}/client/src",
"userDataDir": false
}
],
"compounds": [
{
"name": "Full Stack",
"configurations": ["Server", "Client"]
}
]
}
После этого можно запустить оба отладчика одновременно, выбрав в выпадающем списке “Full Stack”.
Результат: отладчик ловит точки останова как на серверном коде (Node.js), так и в React компонентах (Chrome DevTools).
2. Пользовательские сниппеты (snippets) для JavaScript
Сниппеты ускоряют написание повторяющихся конструкций. Пример создания фрагмента для функционального компонента React с хуками в файле .vscode/javascript.code-snippets:
{
"React Function Component": {
"prefix": "rfc",
"body": [
"import React, { useState, useEffect } from 'react';",
"",
"const ${1:ComponentName} = () => {",
" const [${2:state}, set${2:State}] = useState(${3:initialValue});",
" ",
" useEffect(() => {",
" ${4:// side effect}",
" }, [${5}]);",
" ",
" return (",
" ${6}",
" );",
"};",
"",
"export default ${1:ComponentName};",
""
],
"description": "React functional component with useState and useEffect"
}
}
После сохранения файла в проекте при вводе “rfc” в редакторе появится предложение автодополнения.
3. Настройка линтинга для TypeScript с JavaScript
При смешанном проекте (JS и TS) необходимо расширить конфигурацию ESLint:
// .eslintrc.json
{
"root": true,
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint"],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"prettier"
],
"overrides": [
{
"files": ["*.js", "*.jsx"],
"rules": {
"@typescript-eslint/no-var-requires": "off"
}
}
],
"env": { "browser": true, "es2021": true, "node": true },
"parserOptions": { "ecmaVersion": "latest", "sourceType": "module" }
}
Для диагностики проблем добавлены файлы .vscode/settings.json с явным указанием форматера для TypeScript:
{
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"eslint.format.enable": true
}
4. Удалённая разработка по SSH (Remote SSH)
Расширение Remote SSH (ms-vscode-remote.remote-ssh) позволяет открывать папки на удалённом сервере как локальный проект. Пример настройки файла конфигурации SSH (~/.ssh/config):
Host dev-server
HostName 192.168.1.100
User developer
Port 22
IdentityFile ~/.ssh/id_rsa
После подключения через палитру (Remote-SSH: Connect to Host) в VS Code отображаются все расширения и терминал сервера. Удалённые настройки сохраняются отдельно в папке .vscode-server.
Результат: полноценная разработка JavaScript на удалённом Linux сервере с локальным интерфейсом VS Code.
5. Автоматический запуск тестов при сохранении (Jest)
Для выполнения тестов Jest при каждом сохранении используется расширение Jest Runner или настройка tasks.json с watcher:
// .vscode/tasks.json (часть)
{
"label": "Run Jest in watch mode",
"type": "npm",
"script": "test:watch",
"group": "test",
"presentation": {
"reveal": "always",
"panel": "new"
},
"problemMatcher": ["$jest"]
}
В package.json добавляется скрипт:
"scripts": {
"test:watch": "jest --watchAll"
}
После запуска задачи тесты перезапускаются при каждом изменении.
Пример вывода в терминале:
PASS src/__tests__/App.test.js
✓ renders learn react link (12 ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
6. Интеграция с Git: отображение изменений и линтинг перед коммитом
Расширение GitLens (eamodio.gitlens) добавляет аннотации и историю. Однако для автоматического запуска ESLint перед коммитом используется husky и lint-staged. Пример настройки в package.json:
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write", "git add"]
}
В VS Code при коммите через встроенные инструменты Git будет выполняться линтинг и форматирование.