EditorConfig

Файл .editorconfig унифицирует базовые настройки редактора (отступы, переносы строк, кодировку) для всей команды вне зависимости от IDE.

Задача

Разные разработчики используют VS Code, WebStorm, Vim. У каждого свои настройки табов/пробелов и переносов строк. EditorConfig задаёт единые правила один раз — редакторы подхватывают их автоматически.

Решение

Создай .editorconfig в корне репозитория:

# Применяется от корня проекта
root = true

# Все файлы по умолчанию
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true

# JavaScript / TypeScript / JSON
[*.{js,jsx,ts,tsx,json}]
indent_size = 2

# CSS / SCSS / Less
[*.{css,scss,less}]
indent_size = 2

# HTML
[*.html]
indent_size = 2

# Python (если есть в монорепо)
[*.py]
indent_size = 4

# Markdown — пробелы в конце строки несут смысл (перенос)
[*.md]
trim_trailing_whitespace = false

# Makefile требует табы
[Makefile]
indent_style = tab

# YAML
[*.{yml,yaml}]
indent_size = 2

Проверка поддержки редакторами:

  • VS Code — встроена, плагин не нужен (с версии 1.0+).
  • WebStorm / IntelliJ — встроена.
  • Vim / Neovim — плагин editorconfig-vim.
  • Sublime Text — плагин EditorConfig.

Ключевые моменты

  • root = true — останавливает поиск .editorconfig выше по дереву директорий; обязательно для корня репо.
  • end_of_line = lf — Linux/macOS стандарт; предотвращает проблемы с \r\n (Windows CRLF) в git diff.
  • insert_final_newline = true — многие инструменты (git, POSIX) требуют финальный перевод строки.
  • EditorConfig работает на уровне редактора, до Prettier — задаёт минимальные правила, Prettier уточняет.

Варианты

  • Если команда вся на VS Code — достаточно .vscode/settings.json; EditorConfig нужен для кросс-редакторной совместимости.
  • Для монорепо можно добавить локальные .editorconfig в подпапках, переопределяющие секции.

Связанные рецепты / темы