import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import path from 'path'; export default defineConfig(({ mode }) => ({ plugins: [react()], resolve: { alias: { '@': path.resolve(__dirname, './src'), '@shared': path.resolve(__dirname, './src/shared'), '@components': path.resolve(__dirname, './src/shared/components'), '@hooks': path.resolve(__dirname, './src/shared/hooks'), '@stores': path.resolve(__dirname, './src/shared/stores'), '@utils': path.resolve(__dirname, './src/shared/utils'), '@constants': path.resolve(__dirname, './src/shared/constants'), '@services': path.resolve(__dirname, './src/services'), '@app': path.resolve(__dirname, './src/app'), '@features': path.resolve(__dirname, './src/features'), '@pages': path.resolve(__dirname, './src/pages'), }, }, server: { port: 3000, proxy: { '/api': { target: 'http://localhost:4000', changeOrigin: true, }, }, }, build: { // Generate source maps for production debugging sourcemap: mode === 'development', // Chunk splitting for better caching rollupOptions: { output: { manualChunks: { // Vendor chunks 'vendor-react': ['react', 'react-dom', 'react-router-dom'], 'vendor-ui': ['framer-motion', 'lucide-react', 'recharts'], 'vendor-forms': ['react-hook-form', '@hookform/resolvers', 'zod'], 'vendor-state': ['zustand', 'axios'], 'vendor-utils': ['date-fns', 'clsx', 'tailwind-merge'], }, }, }, // Increase chunk size warning limit chunkSizeWarningLimit: 500, }, }));