Настройка EditorConfig для единого стиля кода
EditorConfig решает самую простую проблему: разные редакторы по умолчанию используют разные настройки — пробелы или табы, 2 или 4 символа, LF или CRLF. Файл .editorconfig в корне проекта задаёт эти параметры раз и навсегда для всей команды, независимо от редактора.
Поддержка встроена в VS Code, JetBrains IDE, Vim, Emacs, Sublime Text. Для остальных — плагин.
.editorconfig
# Этот файл применяется ко всем файлам проекта
root = true
# Базовые настройки для всех файлов
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 2
# JavaScript и TypeScript
[*.{js,jsx,ts,tsx,mjs,cjs}]
indent_style = space
indent_size = 2
max_line_length = 100
# CSS, SCSS, Less
[*.{css,scss,less,styl}]
indent_style = space
indent_size = 2
# HTML
[*.{html,htm}]
indent_style = space
indent_size = 2
# JSON
[*.json]
indent_style = space
indent_size = 2
# YAML
[*.{yml,yaml}]
indent_style = space
indent_size = 2
# Python (если есть в монорепо)
[*.py]
indent_style = space
indent_size = 4
max_line_length = 88
# Go
[*.go]
indent_style = tab
indent_size = 4
# PHP
[*.php]
indent_style = space
indent_size = 4
# Makefile — только табы
[Makefile]
indent_style = tab
# Markdown — не обрезаем trailing spaces (два пробела = перенос строки)
[*.md]
trim_trailing_whitespace = false
max_line_length = off
# Бинарные файлы — никаких изменений
[*.{png,jpg,jpeg,gif,ico,webp,svg,woff,woff2,eot,ttf,otf,mp4,mp3,pdf,zip}]
insert_final_newline = false
trim_trailing_whitespace = false
Проверка применения
# Установить editorconfig-checker
npm install --save-dev editorconfig-checker
# Проверить проект
npx ec src/
В CI:
{
"scripts": {
"lint:editorconfig": "editorconfig-checker"
}
}
.ecrc для настройки исключений:
{
"Exclude": [
"dist",
"node_modules",
".git",
"*.min.js",
"*.min.css"
],
"ExcludeRegex": "vendor/.*"
}
Взаимодействие с Prettier
EditorConfig и Prettier дублируют некоторые настройки (отступы, переносы строк). Prettier имеет приоритет в части форматирования кода. EditorConfig применяется к файлам, которые Prettier не обрабатывает: бинарные файлы, специфические форматы, редактирование в IDE без запуска Prettier.
Хорошая практика: держать настройки согласованными:
# .editorconfig
indent_size = 2
// .prettierrc
{
"tabWidth": 2
}
Настройка в VS Code без плагина
VS Code читает .editorconfig автоматически начиная с версии 1.0 — плагин не нужен. Убедиться что встроенная поддержка активна:
// .vscode/settings.json
{
"files.eol": "\n", // LF по умолчанию на Windows
"files.insertFinalNewline": true,
"files.trimTrailingWhitespace": true
}
Эти настройки применяются к редактору, .editorconfig — к сохранению файлов. При конфликте .editorconfig имеет приоритет.
Сроки
Создание .editorconfig для проекта: 15–30 минут. Исправление существующих файлов под новые настройки (trailing whitespace, переносы строк): запустить Prettier или editorconfig-checker --fix — 30–60 минут.







