File size: 3,307 Bytes
7039966 25f22bf 7039966 25f22bf 7039966 25f22bf 7039966 25f22bf 7039966 25f22bf 7039966 25f22bf 7039966 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
import { defineConfig, loadEnv } from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path';
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
// Charge les variables d'environnement pour le mode actuel ('development', 'production', etc.)
// Cela inclut les variables définies dans l'environnement d'exécution (comme sur Hugging Face)
const env = loadEnv(mode, process.cwd(), '');
// --- Vérification des variables critiques pour le frontend ---
if (!env.VITE_SUPABASE_URL) {
console.warn('⚠️ Variable d\'environnement VITE_SUPABASE_URL non définie. Utilisation d\'une valeur par défaut pour le développement.');
}
if (!env.VITE_SUPABASE_ANON_KEY) {
console.warn('⚠️ Variable d\'environnement VITE_SUPABASE_ANON_KEY non définie. Utilisation d\'une valeur par défaut pour le développement.');
}
// --- Configuration de base ---
const config = {
plugins: [react({
jsx: 'transform',
jsxFactory: 'React.createElement',
jsxFragment: 'React.Fragment',
})],
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
},
},
server: {
port: 3000,
host: 'localhost', // Explicitly bind to localhost
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/],
},
},
// --- Injection directe des variables dans le code bundle ---
define: {
// Ces variables seront remplacées par leurs valeurs littérales dans le bundle JS
__VITE_SUPABASE_URL__: JSON.stringify(env.VITE_SUPABASE_URL || 'https://your-project.supabase.co'),
__VITE_SUPABASE_ANON_KEY__: JSON.stringify(env.VITE_SUPABASE_ANON_KEY || 'your-anon-key'),
// Conserver l'ancienne définition si elle est utilisée ailleurs
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
},
};
return config;
}); |