3. Конфигурация vite.config.ts
Конфигурационный файл Vite — vite.config.ts — это точка входа для всех настроек сборщика. Он экспортирует объект конфигурации, обёрнутый в хелпер defineConfig для TypeScript-автодополнения.
Базовая структура
Заголовок раздела «Базовая структура»import { defineConfig } from 'vite'import react from '@vitejs/plugin-react'import path from 'path'
export default defineConfig({ // Плагины plugins: [react()],
// Разрешение модулей resolve: { alias: { '@': path.resolve(__dirname, './src'), '@components': path.resolve(__dirname, './src/components'), }, },
// Настройки dev сервера server: { port: 3000, open: true, proxy: { '/api': 'http://localhost:8080', }, },
// Настройки production сборки build: { outDir: 'dist', sourcemap: true, target: 'es2015', },
// Базовый URL (для деплоя на поддиректорию) base: '/',})defineConfig — Зачем нужен?
Заголовок раздела «defineConfig — Зачем нужен?»// Без defineConfig — работает, но нет TypeScript-типовexport default { plugins: [react()], // ❌ нет автодополнения, нет проверки типов}
// С defineConfig — полная TypeScript поддержкаexport default defineConfig({ plugins: [react()], // ✓ IntelliSense, автодополнение, проверка типов})resolve.alias — Упрощение импортов
Заголовок раздела «resolve.alias — Упрощение импортов»resolve: { alias: { '@': path.resolve(__dirname, './src'), },}
// tsconfig.json — нужно добавить и сюда!{ "compilerOptions": { "paths": { "@/*": ["./src/*"] } }}
// Теперь вместо:import Button from '../../../components/Button'
// Можно писать:import Button from '@/components/Button'build опции
Заголовок раздела «build опции»build: { outDir: 'dist', // Директория вывода assetsDir: 'assets', // Поддиректория для ресурсов sourcemap: true, // Генерировать source maps minify: 'esbuild', // 'esbuild' | 'terser' | false target: 'es2015', // Target браузеры/версии
// Rollup опции rollupOptions: { output: { manualChunks: { vendor: ['react', 'react-dom'], utils: ['lodash', 'date-fns'], }, }, },
// Лимит для inline (base64) ресурсов assetsInlineLimit: 4096, // 4kb
// Разбивка CSS в отдельные файлы cssCodeSplit: true,}base URL
Заголовок раздела «base URL»// Для деплоя на GitHub Pages (например /my-repo/)base: '/my-repo/',
// Для деплоя в кореньbase: '/',
// Из переменной окруженияbase: process.env.NODE_ENV === 'production' ? '/app/' : '/',Conditional Config с mode
Заголовок раздела «Conditional Config с mode»export default defineConfig(({ command, mode }) => { // command: 'serve' (dev) | 'build' (prod) // mode: 'development' | 'production' | custom
return { plugins: [ react(), ...(mode === 'development' ? [devPlugin()] : []), ], build: { sourcemap: command === 'serve', }, }})Ниже — интерактивный конструктор конфигурации: включайте опции и получайте готовый vite.config.ts: