EditorConfig

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

Зачем нужно

Когда один разработчик использует VS Code с настройкой «4 пробела», другой — Vim с табами, каждый коммит содержит изменения отступов. EditorConfig фиксирует эти параметры на уровне проекта, и все редакторы автоматически применяют их — без ручной настройки у каждого.

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

  • Любой командный проект с разными IDE у участников
  • Проекты с разными типами файлов: JSON (2 пробела), Makefile (табы обязательны), Python (4 пробела)
  • Open source проекты: стандартизация для новых контрибьюторов
  • Корпоративные стандарты кодирования

Основной контент

Поддержка редакторами

EditorConfig поддерживается из коробки в:

  • VS Code (встроено)
  • JetBrains IDEs (IntelliJ, WebStorm, PyCharm...)
  • Vim/Neovim (плагин)
  • Atom, 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,ts,jsx,tsx}]
indent_size = 2

# JSON
[*.json()]
indent_size = 2

# Python
[*.py]
indent_size = 4

# Makefile — табы обязательны
[Makefile]
indent_style = tab

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

Параметры

Параметр Значения Описание
indent_style space / tab Тип отступа
indent_size число Размер отступа
end_of_line lf / crlf / cr Конец строки
charset utf-8 и др. Кодировка
insert_final_newline true / false Пустая строка в конце
trim_trailing_whitespace true / false Удалять пробелы в конце

Glob-паттерны для секций

[*]          # все файлы
[*.js]       # только .js
[*.{js,ts}]  # .js и .ts
[src/**]     # все в папке src
[!vendor/**] # исключить vendor

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

  • root = true пропущен — EditorConfig ищет файлы вверх по дереву директорий; без root = true может найти другой .editorconfig в родительской папке
  • Конфликт с Prettier — EditorConfig задаёт базовые параметры редактора, Prettier форматирует код; они не конфликтуют, но должны быть согласованы (indent_size одинаковый)
  • LF vs CRLF на Windows — установи end_of_line = lf для кроссплатформенных проектов; иначе Git будет видеть изменения в каждом файле

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

Ресурсы