Prettier — это opinionated (упрямый) форматтер кода, который принудительно приводит весь проект к единому стилю.
- 🔥 Прекращает споры о стиле кода (табы vs пробелы, точки с запятой и т.д.).
- 👀 Снижает визуальный шум в Pull Requests и Code Review — видны только реальные изменения логики.
- ⏳ Экономит время — больше не нужно тратить время на ручное выравнивание кода.
- 🤝 Гарантирует единообразие — код всей команды выглядит так, будто его писал один человек.
Используем pnpm:
pnpm install -D prettierСоздайте файл .prettierrc в корне проекта:
{
"semi": true,
"singleQuote": true,
"trailingComma": "all",
"printWidth": 120,
"tabWidth": 2,
"endOfLine": "lf"
}Создайте файл .prettierignore, чтобы исключить папки из форматирования (например папку с svg иконками):
node_modules
dist
build
coverageЕсли вы используете ESLint, важно отключить конфликтующие правила форматирования.
-
Установите конфиг:
pnpm install -D eslint-config-prettier
-
В
eslint.config.jsимпортируйте конфиг и добавьте его последним в массив конфигураций:import eslintConfigPrettier from 'eslint-config-prettier'; extends: [ // ... другие настройки eslintConfigPrettier, ];
Чтобы отформатировать все файлы в проекте:
npx prettier . --writeДобавьте удобные команды в package.json:
{
"scripts": {
"format": "prettier . --write",
"format:check": "prettier . --check",
"lint": "eslint .",
"lint:fix": "eslint . --fix"
}
}Запуск:
pnpm format— форматирует файлы (Prettier).pnpm format:check— проверяет стиль (полезно для CI/CD).pnpm lint— ищет проблемы в коде (ESLint).pnpm lint:fix— пробует автоматически исправить проблемы (ESLint).
Чтобы Prettier работал автоматически при сохранении файла.
-
Установите расширение Prettier – Code formatter.
-
Откройте настройки (
Ctrl + ,) илиsettings.json. -
Включите форматирование при сохранении:
{ "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode" }
- Откройте Settings → Languages & Frameworks → JavaScript → Prettier.
- Убедитесь, что путь к пакету указан верно (обычно находится автоматически в
node_modules). - Включите галочки:
- On 'Reformat Code' action
- On save
EditorConfig помогает настроить базовые параметры форматирования (отступы, переводы строк) на уровне редактора.
-
Создайте файл
.editorconfigв корне проекта:root = true [*] charset = utf-8 indent_style = space indent_size = 2 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true
-
Если вы используете VS Code, установите расширение EditorConfig for VS Code. В WebStorm и IntelliJ IDEA поддержка встроена из коробки.
Prettier автоматически подхватывает настройки из .editorconfig, если они не переопределены в .prettierrc.
Настроим автоматический запуск форматирования перед коммитом, чтобы "грязный" код не попадал в репозиторий.
pnpm install -D husky lint-stagedНастроим скрипт prepare в package.json и создаст папку .husky выполнив команду:
pnpm husky initДобавьте в package.json:
{
"lint-staged": {
"**/*.{js,ts,jsx,tsx,json,css,md}": "prettier --write"
}
}В файле .husky/pre-commit замените содержимое на:
npx lint-stagedРезультат:
- При
git commitавтоматически запускается форматирование. lint-stagedобрабатывает только изменённые файлы (staged), что работает очень быстро.- Неотформатированный код физически не может попасть в коммит.
Разные операционные системы используют разные символы для обозначения конца строки:
- Windows: CRLF (
\r\n) - Linux / macOS: LF (
\n)
Если в команде есть разработчики на разных ОС, Git может "сходить с ума", показывая, что изменился весь файл, хотя код не менялся. Prettier также может требовать определенный формат (обычно LF).
Чтобы раз и навсегда решить проблему, создайте файл .gitattributes в корне проекта:
* text=auto eol=lfЧто это делает: Git будет автоматически конвертировать окончания строк в LF при коммите, независимо от того, какая ОС у разработчика.
- Плюсы: Невероятно быстрый (Rust), объединяет линтер и форматтер.
- Минусы: Меньшая экосистема и гибкость по сравнению с Prettier+ESLint.
- Prettier — стандарт индустрии.
- Должен быть настроен на трёх уровнях:
- В редакторе (для удобства разработчика).
- В скриптах проекта (для CI/CD и ручного запуска).
- В Git Hooks (как гарант качества кода).
- Форматирование — это задача роботов, а не людей.