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;
});