import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const sharedPathCandidates = [ path.resolve(__dirname, '../frontend/src/components/shared'), path.resolve(__dirname, '../../frontend/src/components/shared'), '/frontend/src/components/shared', path.resolve(__dirname, '../../frontend/src/components/shared'), // Try parent of parent ]; const sharedComponentsPath = sharedPathCandidates.find((candidate) => fs.existsSync(candidate)) ?? sharedPathCandidates[0]; // Log for debugging console.log('Shared components path:', sharedComponentsPath); console.log('Path exists:', fs.existsSync(sharedComponentsPath)); export default defineConfig({ plugins: [react()], resolve: { alias: { '@shared': sharedComponentsPath, // Explicit aliases for CSS files to ensure Vite resolves them '@shared/blocks/blocks.css': path.join(sharedComponentsPath, 'blocks/blocks.css'), '@shared/layouts/layouts.css': path.join(sharedComponentsPath, 'layouts/layouts.css'), }, }, server: { host: '0.0.0.0', port: 5176, allowedHosts: ['sites.igny8.com', 'builder.igny8.com'], fs: { allow: [path.resolve(__dirname, '..'), sharedComponentsPath], }, }, build: { rollupOptions: { output: { manualChunks: { // Code-split builder routes to avoid loading in public sites 'builder': ['./src/builder/pages/wizard/WizardPage', './src/builder/pages/preview/PreviewCanvas', './src/builder/pages/dashboard/SiteDashboard'], // Vendor chunks 'vendor-react': ['react', 'react-dom', 'react-router-dom'], 'vendor-ui': ['lucide-react', 'zustand'], }, }, }, }, });