Форматирование кода в Vite-проектах является отдельным слоем инженерной дисциплины, который не влияет на выполнение приложения, но определяет читаемость, предсказуемость и единообразие кодовой базы. В экосистеме современного JavaScript Prettier используется как основной инструмент автоматического форматирования, исключающий субъективные разногласия по стилю кода и снимающий нагрузку с code review, связанную с косметическими правками.
Vite как сборщик и dev-сервер не навязывает стиль кода и не включает встроенные механизмы форматирования. Его задача ограничивается обработкой модулей, быстрым обновлением в разработке и оптимизацией production-сборки. Форматирование кода существует на уровне инструментов разработки и CI-процессов.
Ключевая особенность Vite-экосистемы заключается в том, что проект обычно использует сразу несколько слоёв инструментов:
Разделение ответственности между этими инструментами критично. ESLint отвечает за логические и потенциально ошибочные конструкции, Prettier — за синтаксическое оформление.
Prettier работает как opinionated formatter: он не предоставляет десятки вариантов стиля, а преобразует код к единому стандарту. В отличие от ESLint rules, форматирование Prettier детерминировано и воспроизводимо.
Основные особенности:
Prettier работает поверх дерева синтаксического анализа, перезаписывая код с учётом правил форматирования, а не через регулярные выражения.
В типичном Vite-проекте установка выполняется через npm или yarn:
npm install -D prettier
или
yarn add -D prettier
После установки появляется возможность запускать форматирование вручную:
npx prettier . --write
В большинстве проектов форматирование ограничивают директорией
src, исключая dist, node_modules
и другие генерируемые папки.
Конфигурация Prettier задаётся через файл .prettierrc,
.prettierrc.json, .prettierrc.js или через
поле prettier в package.json.
Пример минимальной конфигурации:
{
"singleQuote": true,
"semi": true,
"trailingComma": "es5",
"printWidth": 80,
"tabWidth": 2
}
Описание ключевых параметров:
singleQuote — использование одинарных кавычек вместо
двойныхsemi — добавление точек с запятойtrailingComma — управление завершающими запятымиprintWidth — максимальная длина строки перед
переносомtabWidth — размер отступаКонфигурация Prettier должна оставаться минимальной. Избыточная настройка противоречит его философии и приводит к конфликтам с ESLint.
Prettier поддерживает .prettierignore, аналогичный
.gitignore.
Пример:
node_modules
dist
coverage
public
vite.config.*
Исключение сборочных и зависимых директорий снижает нагрузку и ускоряет форматирование.
В Vite-проектах особенно важно исключать:
dist — результат сборки.vite — кэш dev-сервераnode_modules — зависимостиНаиболее частый источник проблем в Vite-проектах — конфликт между ESLint и Prettier. ESLint может содержать правила форматирования, которые противоречат Prettier, например:
Для устранения конфликтов используется пакет интеграции:
npm install -D eslint-config-prettier
Этот пакет отключает ESLint-правила, конфликтующие с Prettier.
Пример ESLint конфигурации:
{
"extends": [
"eslint:recommended",
"plugin:vue/vue3-recommended",
"prettier"
]
}
Ключевой момент — prettier всегда должен быть последним
в списке extends, чтобы переопределять остальные
правила.
В некоторых конфигурациях добавляется плагин:
npm install -D eslint-plugin-prettier
Однако его использование становится менее популярным, поскольку современная практика разделяет linting и formatting полностью.
Vite сам по себе не выполняет форматирование кода, но тесно интегрируется с инструментами разработки через dev-server и HMR. Форматирование влияет на разработку косвенно:
При использовании Prettier важно учитывать, что массовое форматирование может вызвать перезагрузку большого числа модулей.
Наиболее удобный сценарий — автоматическое форматирование при сохранении.
В VS Code конфигурация выглядит следующим образом:
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
Дополнительно полезно отключить конфликтующие форматтеры ESLint:
{
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}
Важный момент заключается в порядке выполнения: ESLint может исправлять код после Prettier, поэтому часто Prettier назначается основным форматтером.
Форматирование на уровне IDE не гарантирует единообразие в репозитории, поэтому используется pre-commit слой.
Установка:
npm install -D husky lint-staged
Инициализация Husky:
npx husky init
Конфигурация lint-staged в
package.json:
{
"lint-staged": {
"*.{js,ts,vue,jsx,tsx}": [
"prettier --write",
"eslint --fix"
]
}
}
Добавление hook:
npx husky add .husky/pre-commit "npx lint-staged"
Такой подход гарантирует, что в репозиторий не попадёт неформатированный код.
Vite часто используется вместе с TypeScript. Prettier корректно
работает с .ts и .tsx файлами без
дополнительной настройки.
Однако важно учитывать:
tsc или ESLintРекомендуется использовать отдельный процесс проверки типов:
tsc --noEmit
или интеграцию в CI.
Vite активно используется в Vue 3 и React проектах.
Для Vue добавляется плагин ESLint:
npm install -D eslint-plugin-vue
Prettier форматирует .vue файлы через парсер, корректно
обрабатывая:
<template><script><style>Для React JSX:
parser при нестандартных
конфигурацияхПример .prettierrc для мультифреймворк проекта:
{
"singleQuote": true,
"semi": true,
"printWidth": 100,
"trailingComma": "all"
}
В Vite-проектах часто присутствуют файлы, которые не следует форматировать:
Пример расширенного .prettierignore:
node_modules
dist
coverage
.vite
pnpm-lock.yaml
package-lock.json
yarn.lock
Игнорирование lock-файлов может быть спорным решением, но в некоторых командах оно предотвращает шумовые изменения.
В CI пайплайне Prettier обычно используется в режиме проверки без изменения файлов:
npx prettier . --check
Такой режим возвращает ошибку, если код не соответствует стандарту форматирования.
Пример шага CI:
- name: Check formatting
run: npx prettier . --check
Это обеспечивает контроль качества без автоматического переписывания файлов на сервере.
Prettier оптимизирован для больших кодовых баз, но в Vite-проектах с монорепозиториями возможны проблемы производительности при форматировании всей структуры.
Практики оптимизации:
src/).prettierignoreВ Vite-проектах часто встречаются следующие ошибки конфигурации:
eslint-config-prettierКорректная архитектура предполагает строгое разделение:
При масштабировании проекта Prettier становится частью инфраструктуры, а не локальным инструментом разработчика. Он влияет на:
В крупных Vite-проектах стандартом становится обязательное форматирование на уровне pre-commit и CI, что исключает разночтения в стилях и снижает стоимость сопровождения кода.