import { fileURLToPath, URL } from 'node:url' import babel from '@rolldown/plugin-babel' import tailwindcss from '@tailwindcss/vite' import { tanstackRouter } from '@tanstack/router-plugin/vite' import react, { reactCompilerPreset } from '@vitejs/plugin-react' import { defineConfig } from 'vite' function resolveManualChunk(id: string) { if (!id.includes('/node_modules/')) { return } if ( id.includes('/node_modules/react/') || id.includes('/node_modules/react-dom/') || id.includes('/node_modules/scheduler/') ) { return 'vendor-react' } if (id.includes('/node_modules/@tanstack/')) { return 'vendor-tanstack' } if ( id.includes('/node_modules/i18next/') || id.includes('/node_modules/react-i18next/') ) { return 'vendor-i18n' } if ( id.includes('/node_modules/motion/') || id.includes('/node_modules/lottie-web/') ) { return 'vendor-animation' } if ( id.includes('/node_modules/radix-ui/') || id.includes('/node_modules/@radix-ui/') ) { return 'vendor-radix' } if (id.includes('/node_modules/lucide-react/')) { return 'vendor-icons' } return 'vendor' } export default defineConfig({ resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), 'lottie-web': fileURLToPath( new URL( './node_modules/lottie-web/build/player/lottie_light.js', import.meta.url, ), ), }, }, server: { port: 9999, host: '0.0.0.0', allowedHosts: ['darlena-nonexpiring-cathie.ngrok-free.dev'], proxy: { '/api': { target: 'https://zihua-api.h55555game.top', changeOrigin: true, }, }, }, plugins: [ tanstackRouter({ target: 'react', autoCodeSplitting: true, }), tailwindcss(), react(), babel({ presets: [reactCompilerPreset()] }), ], build: { outDir: 'zihua-web', rolldownOptions: { output: { manualChunks: resolveManualChunk, }, }, }, })