Vite: production-ориентированный vite.config.ts (2026)
Минимальный и достаточный конфиг Vite для современного фронтенд-проекта: ESM, TypeScript, defineConfig, алиасы, build.target, sourcemap, порты dev и preview. Только официальный API, без экспериментальных опций.
Как использовать
- Скопировать в корень проекта как vite.config.ts
- Убедиться, что установлены vite и typescript (npm i -D vite typescript)
- При необходимости добавить плагин фреймворка (react, vue, svelte) и расширить конфиг
Конфигурация использует только официальный API Vite (vite.dev/config), без нестабильных или экспериментальных опций.
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import { defineConfig } from 'vite';
// В ESM нет __dirname; путь к директории конфига нужен для resolve.alias
const __dirname = path.dirname(fileURLToPath(import.meta.url));
export default defineConfig({
// --- Разрешение модулей и алиасы ---
resolve: {
// @/ → src/ — короткие импорты без относительных путей вглубь
alias: {
'@': path.resolve(__dirname, 'src'),
},
},
// --- Dev-сервер (pnpm dev / npm run dev) ---
server: {
// Порт по умолчанию 5173; явно задаём для единообразия и документации
port: 5173,
},
// --- Preview (pnpm preview / npm run preview) — раздача собранного dist ---
preview: {
// Порт по умолчанию 4173; удобно отличать от dev при одновременном запуске
port: 4173,
},
// --- Production build ---
build: {
// Цель транспиляции: современные браузеры 2025–2026.
// baseline-widely-available = Chrome 107+, Edge 107+, Firefox 104+, Safari 16+.
// Явно задаём для предсказуемости и при необходимости смены (например es2022).
target: 'baseline-widely-available',
// Source maps в проде: 'hidden' — карты генерируются, но в бандл не добавляется
// комментарий. Нужны для разбора ошибок в Sentry/логах; пользователь их не тянет.
// true — отдельные .map файлы + комментарий в бандле (можно не отдавать .map с сервера).
// false — без карт (меньше объём, сложнее отлаживать прод).
sourcemap: 'hidden',
},
});
Файл должен лежать в корне проекта как vite.config.ts. Для React/Vue/Svelte добавь соответствующий плагин в plugins (например @vitejs/plugin-react).
Когда такого конфига достаточно
- SPA или MPA на React, Vue, Svelte или vanilla TS/JS.
- Один вход (index.html), стандартные ассеты (CSS, картинки, шрифты).
- Нет кастомного base, прокси для API настраивается при необходимости в
server.proxy. - Деплой — статика в
dist, раздача через nginx/CDN.
Когда конфиг стоит расширять
- Плагин фреймворка — React:
@vitejs/plugin-react, Vue:@vitejs/plugin-vue, и т.д. - Base path — если приложение не в корне домена:
base: '/app/'. - Переменные окружения — глобальные константы через
define, не секреты (те в .env). - Прокси в dev — запросы к бэкенду:
server.proxy. - SVG как компоненты, Raw-импорты — плагины вроде
vite-plugin-svgr. - Легаси-браузеры —
@vitejs/plugin-legacyи сдвигbuild.targetпри необходимости. - SSR — отдельная настройка
build.ssrи точки входа.
Не используй вымышленные опции: все параметры есть в официальной документации Vite.