textmachine/frontend/vite.config.ts

30 lines
2.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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}'],
},
});