VS Code: workspace настройки

Workspace-настройки VS Code — конфигурация редактора уровня проекта, хранящаяся в .vscode/settings.json и переопределяющая глобальные настройки пользователя.

Зачем нужно

User settings применяются глобально ко всем проектам. Workspace settings специфичны для репозитория: форматтер, линтер, отступы могут различаться между проектами. Коммит .vscode/settings.json в репозиторий обеспечивает одинаковую среду для всей команды.

Где используется

  • Командная разработка — единые настройки для всех
  • Проекты с разными требованиями (tabSize 2 vs 4, разные форматтеры)
  • Рекомендации расширений для нового участника команды
  • Настройки задач и отладчика для конкретного проекта

Структура .vscode/

.vscode/
  settings.json    — настройки редактора для проекта
  extensions.json()  — рекомендуемые расширения
  launch.json()      — конфигурации отладчика
  tasks.json()       — задачи (build, test, run)

settings.json — ключевые опции

{
  // Форматирование
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.tabSize": 2,
  "editor.insertSpaces": true,
  "editor.wordWrap": "on",

  // Форматтер по типу файла
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[python]": {
    "editor.defaultFormatter": "ms-python.black-formatter"
  },
  "[markdown]": {
    "editor.defaultFormatter": "yzhang.markdown-all-in-one",
    "editor.wordWrap": "on"
  },

  // ESLint — автофикс при сохранении
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  },

  // TypeScript
  "typescript.tsdk": "node_modules/typescript/lib",
  "typescript.preferences.importModuleSpecifier": "relative",

  // Файловые исключения (не показывать в Explorer)
  "files.exclude": {
    "node_modules": true,
    "dist": true,
    ".git": true
  },

  // Поиск — исключить из индексации
  "search.exclude": {
    "**/node_modules": true,
    "**/dist": true,
    "**/*.lock": true
  },

  // Терминал
  "terminal.integrated.defaultProfile.windows": "Git Bash",
  "terminal.integrated.defaultProfile.linux": "bash",

  // Git
  "git.autofetch": true,
  "git.confirmSync": false
}

extensions.json() — рекомендуемые расширения

// .vscode/extensions.json()
{
  "recommendations": [
    "esbenp.prettier-vscode",      // Prettier
    "dbaeumer.vscode-eslint",      // ESLint
    "ms-vscode.vscode-typescript-next", // TypeScript
    "eamodio.gitlens",             // GitLens
    "bradlc.vscode-tailwindcss",   // Tailwind CSS
    "ms-azuretools.vscode-docker"  // Docker
  ],
  "unwantedRecommendations": 
}

При открытии проекта VS Code предложит установить рекомендованные расширения.

Приоритет настроек

1. Default settings (VS Code)
2. User settings (~/.config/Code/User/settings.json)
3. Workspace settings (.vscode/settings.json)  ← перекрывает User
4. Folder settings (multi-root workspace)

Частые ошибки

  • Коммит .vscode/settings.json с личными настройками (путь к Python, шрифт) — конфликтует у других
  • Добавление .vscode/ в .gitignore полностью — теряются общекомандные настройки
  • Нет extensions.json — новые участники команды не знают, какие расширения нужны
  • editor.formatOnSave: true без указания defaultFormatter — VS Code спрашивает каждый раз

Связанные темы

Ресурсы