import tailwindcss from '@tailwindcss/vite' import react from '@vitejs/plugin-react' import { fileURLToPath } from 'node:url' import { defineConfig } from 'vitest/config' // Path aliases mirror tsconfig `paths` — register here once instead of writing `../../../` chains. const src = fileURLToPath(new URL('./src', import.meta.url)) export default defineConfig({ plugins: [react(), tailwindcss()], resolve: { alias: { '@shared': `${src}/shared`, '@features': `${src}/features`, '@pages': `${src}/pages`, '@app': `${src}/app`, '@test': `${src}/test`, }, }, server: { // Tests read the mod's theme presets (outside this package) to check the generated copy. fs: process.env.VITEST ? { allow: ['.', '../mod/src/main/java/dev/loki/lovisual/features/theme/presets'] } : undefined, // Same-origin in dev: the browser talks to /api, Vite forwards to the gateway. proxy: { '/api': { target: 'http://localhost:8080', rewrite: (path) => path.replace(/^\/api/, ''), // The refresh cookie is scoped to Path=/auth by the backend; in dev the // browser sees it under /api/auth, so rewrite the path accordingly. cookiePathRewrite: { '/auth': '/api/auth' }, }, }, }, test: { environment: 'jsdom', setupFiles: ['./src/test/setup.ts'], css: false, // Route pages now load via dynamic import() (src/app/routes.tsx); the default 5000ms // per-test budget can be tight for a route-transition test under a loaded parallel run. testTimeout: 10000, }, })