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в подпапках, переопределяющие секции.