30 lines
2.1 KiB
TypeScript
30 lines
2.1 KiB
TypeScript
import react from '@vitejs/plugin-react';
|
||
import { defineConfig } from 'vitest/config';
|
||
|
||
// Конфиг держим минимальным: в Vite 8 (Rolldown) часть старых опций стала молчаливым no-op,
|
||
// поэтому каждая строка ниже добавлена осознанно и с причиной.
|
||
export default defineConfig({
|
||
plugins: [react()],
|
||
// Прокси, а не адрес платформы в коде: фронт обязан жить на ТОМ ЖЕ origin. Это факт, а не
|
||
// настройка — CORS-слоя у платформы нет вовсе, preflight OPTIONS с чужим Origin получает 401 от
|
||
// гарда сессии (замер приёмки №15 на живом бинаре). Значит браузерный клиент с другого origin
|
||
// неработоспособен как класс, и в деве единственный рабочий путь — свой origin поверх прокси.
|
||
// Без TM_PLATFORM прокси не поднимается: по умолчанию сеть держит MSW.
|
||
server: process.env.TM_PLATFORM
|
||
? { proxy: { '/v0': process.env.TM_PLATFORM, '/auth': process.env.TM_PLATFORM } }
|
||
: undefined,
|
||
// Тот же флаг виден клиенту: без него мок-воркер перехватил бы запрос ДО прокси, и настройка
|
||
// выглядела бы сломанной, а не перекрытой.
|
||
define: {
|
||
'import.meta.env.VITE_TM_PLATFORM': JSON.stringify(process.env.TM_PLATFORM ?? ''),
|
||
},
|
||
// Lightning CSS вместо esbuild на минификации — пин STACK_DECISIONS §2.
|
||
build: { cssMinify: 'lightningcss' },
|
||
test: {
|
||
environment: 'happy-dom',
|
||
// По умолчанию Vitest отдаёт вместо CSS пустую заглушку — тогда контракт-тест токенов
|
||
// проверял бы пустоту и всегда был бы зелёным.
|
||
css: true,
|
||
include: ['src/**/*.test.{ts,tsx}'],
|
||
},
|
||
});
|