import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import path from 'path'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
'@components': path.resolve(__dirname, './src/components'),
'@hooks': path.resolve(__dirname, './src/hooks'),
'@lib': path.resolve(__dirname, './src/lib'),
'@pages': path.resolve(__dirname, './src/pages'),
'@services': path.resolve(__dirname, './src/services'),
'@stores': path.resolve(__dirname, './src/stores'),
'@types': path.resolve(__dirname, './src/types'),
'@utils': path.resolve(__dirname, './src/utils'),
'@constants': path.resolve(__dirname, './src/constants'),
},
},
server: {
host: '0.0.0.0',
port: 15001,
watch: {
usePolling: true,
}
},
build: {
outDir: 'dist',
sourcemap: false, // Disable sourcemaps for production
minify: 'esbuild', // Faster minification
target: 'es2015', // Modern browser support
rollupOptions: {
output: {
// Code splitting for better caching
manualChunks: {
vendor: ['react', 'react-dom'],
router: ['react-router-dom'],
query: ['@tanstack/react-query'],
ui: ['lucide-react'],
i18n: ['i18next', 'react-i18next']
},
// Optimize chunk names
chunkFileNames: 'assets/[name]-[hash].js',
entryFileNames: 'assets/[name]-[hash].js',
assetFileNames: 'assets/[name]-[hash].[ext]'
}
},
// Performance optimizations
cssCodeSplit: true,
reportCompressedSize: false, // Faster builds
chunkSizeWarningLimit: 1000
},
// Optimize dependencies
optimizeDeps: {
include: ['react', 'react-dom', 'react-router-dom', '@tanstack/react-query']
},
// Define environment variables
define: {
__APP_VERSION__: JSON.stringify(process.env.npm_package_version || '1.0.0'),
__BUILD_TIME__: JSON.stringify(new Date().toISOString())
},
})