2026-09-19 18:20:59 +03:00
|
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
|
import { defineConfig } from 'vite';
|
|
|
|
|
import react from '@vitejs/plugin-react';
|
|
|
|
|
import tailwindcss from '@tailwindcss/vite';
|
|
|
|
|
|
|
|
|
|
export default defineConfig({
|
|
|
|
|
plugins: [react(), tailwindcss()],
|
|
|
|
|
resolve: {
|
|
|
|
|
alias: {
|
|
|
|
|
'@': fileURLToPath(new URL('./src', import.meta.url)),
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
build: {
|
|
|
|
|
outDir: 'dist',
|
|
|
|
|
emptyOutDir: true,
|
|
|
|
|
sourcemap: false,
|
|
|
|
|
target: 'es2022',
|
2026-09-20 18:51:31 +03:00
|
|
|
// SDK LiveKit (~520 КБ) подгружается отдельным чанком только при входе в
|
|
|
|
|
// голосовую комнату, поэтому порог предупреждения поднят осознанно.
|
|
|
|
|
chunkSizeWarningLimit: 600,
|
2026-09-19 18:20:59 +03:00
|
|
|
},
|
|
|
|
|
server: {
|
|
|
|
|
port: 5173,
|
|
|
|
|
proxy: {
|
|
|
|
|
'/api': 'http://127.0.0.1:8080',
|
|
|
|
|
'/healthz': 'http://127.0.0.1:8080',
|
|
|
|
|
'/readyz': 'http://127.0.0.1:8080',
|
2026-09-19 21:50:06 +03:00
|
|
|
// Файлы аватаров/иконок отдаёт тот же инстанс.
|
|
|
|
|
'/files': 'http://127.0.0.1:8080',
|
|
|
|
|
// Шлюз Фазы 1: WebSocket на том же origin.
|
|
|
|
|
'/gateway': { target: 'ws://127.0.0.1:8080', ws: true },
|
2026-09-19 18:20:59 +03:00
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
test: {
|
|
|
|
|
environment: 'jsdom',
|
|
|
|
|
globals: true,
|
|
|
|
|
setupFiles: ['./tests/setup.ts'],
|
|
|
|
|
include: ['tests/**/*.test.{ts,tsx}'],
|
|
|
|
|
css: false,
|
|
|
|
|
},
|
|
|
|
|
});
|