import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import path from 'path' // https://vitejs.dev/config/ export default defineConfig({ plugins: [react({ jsx: 'transform', jsxFactory: 'React.createElement', jsxFragment: 'React.Fragment', })], resolve: { alias: { '@': path.resolve(__dirname, './src'), }, }, server: { port: 3000, host: true, // Allow access from external devices on the same network proxy: { '/api': { target: 'http://localhost:5000', changeOrigin: true, secure: false, // Configure proxy to handle WebSocket connections if needed ws: true, // Configure proxy to handle CORS headers configure: (proxy, _options) => { proxy.on('error', (err, _req, _res) => { console.log('proxy error', err); }); proxy.on('proxyReq', (proxyReq, req, _res) => { console.log('Sending Request to the Target:', req.method, req.url); }); proxy.on('proxyRes', (proxyRes, req, _res) => { console.log('Received Response from the Target:', proxyRes.statusCode, req.url); }); }, }, // Proxy for WebSocket connections (if needed for real-time features) '/ws': { target: 'http://localhost:5000', ws: true, changeOrigin: true, secure: false, }, }, }, build: { outDir: 'dist', sourcemap: true, // Configure build for production rollupOptions: { output: { manualChunks: { // Create separate chunks for vendor libraries vendor: ['react', 'react-dom', 'react-router-dom', 'react-redux'], }, }, }, // Ensure JSX is processed during build commonjsOptions: { include: [/node_modules/], }, }, // Define environment variables that should be exposed to the browser define: { 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'), }, })