Files
WooNooW/customer-spa/vite.config.ts
Dwindi Ramadhana 447ca501c7 fix: Generate Vite manifest for customer SPA loading
Problem: Customer SPA stuck on 'Loading...' message after installation
Root Cause: Vite build wasn't generating manifest.json, causing WordPress asset loader to fall back to direct app.js loading without proper module configuration

Solution:
1. Added manifest: true to both SPA vite configs
2. Updated Assets.php to look for manifest in correct location (.vite/manifest.json)
3. Rebuilt both SPAs with manifest generation

Changes:
- customer-spa/vite.config.ts: Added manifest: true
- admin-spa/vite.config.ts: Added manifest: true
- includes/Frontend/Assets.php: Updated manifest path from 'manifest.json' to '.vite/manifest.json'

Build Output:
- Customer SPA: dist/.vite/manifest.json generated
- Admin SPA: dist/.vite/manifest.json generated
- Production zip: 10M (includes manifest files)

Result:
 Customer SPA now loads correctly via manifest
 Admin SPA continues to work
 Proper asset loading with CSS and JS from manifest
 Production package ready for deployment
2025-12-30 17:26:18 +07:00

53 lines
1.4 KiB
TypeScript

import react from '@vitejs/plugin-react';
import { defineConfig } from 'vite';
import { readFileSync } from 'fs';
import { resolve, dirname } from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const key = readFileSync(resolve(__dirname, '../admin-spa/.cert/woonoow.local-key.pem'));
const cert = readFileSync(resolve(__dirname, '../admin-spa/.cert/woonoow.local-cert.pem'));
export default defineConfig({
base: './',
publicDir: 'public',
plugins: [
react({
jsxRuntime: 'automatic',
})
],
resolve: { alias: { '@': resolve(__dirname, './src') } },
server: {
host: 'woonoow.local',
port: 5174,
strictPort: true,
https: { key, cert },
cors: {
origin: ['https://woonoow.local', 'https://woonoow.local:5174'],
credentials: true,
},
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',
'Access-Control-Allow-Headers': 'X-Requested-With, content-type, Authorization',
},
hmr: {
protocol: 'wss',
host: 'woonoow.local',
port: 5174,
clientPort: 5174,
}
},
build: {
outDir: 'dist',
emptyOutDir: true,
manifest: true,
rollupOptions: {
input: { app: 'src/main.tsx' },
output: { entryFileNames: 'app.js', assetFileNames: 'app.[ext]' }
}
}
});