Полная настройка 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 будет выполняться линтинг и форматирование.

Настройка Visual Studio Code для JavaScript - comments

En
Vscode js (javascript)