import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; function userManagementSpaFallback() { const rewrite = (req) => { const url = req.url || ''; if (!url.startsWith('/_um/') && url !== '/_um') return; if (/\.[a-zA-Z0-9]+$/.test(url.split('?')[0])) return; // real assets pass through req.url = '/_um/index.html'; }; return { name: 'user-management-spa-fallback', configureServer(s) { s.middlewares.use((req, _res, next) => { rewrite(req); next(); }); }, configurePreviewServer(s) { s.middlewares.use((req, _res, next) => { rewrite(req); next(); }); }, }; } export default defineConfig({ root: __dirname, cacheDir: '../../node_modules/.vite/apps/backoffice', server: { port: 4201, host: 'localhost', }, preview: { port: 4201, host: 'localhost' }, plugins: [react(), nxViteTsPaths()], resolve: { dedupe: [userManagementSpaFallback(), 'react', 'react-dom', 'react-router-dom', '@tanstack/react-query'], }, build: { outDir: '../../dist/apps/backoffice', emptyOutDir: true, reportCompressedSize: true, }, });