Files
brandly/electron.vite.config.ts
T
kevinguevara fbdbd7e05c fix: port conflicts and API proxy for Electron dev mode
- Add Vite proxy: /api/* requests from renderer (5173) → Express (3000)
- Add dynamic port finding: if 3000 is taken, auto-pick next available
- Import net module for port checking
- Use dynamic expressPort in production URL loading
2026-06-02 04:18:34 -05:00

80 lines
1.9 KiB
TypeScript

/**
* electron-vite Configuration — Bradly Desktop App
*
* Configures three build targets:
* - main: Electron main process (Node.js)
* - preload: Sandboxed bridge scripts
* - renderer: React app (browser)
*/
import { defineConfig, externalizeDepsPlugin } from 'electron-vite';
import react from '@vitejs/plugin-react';
import tailwindcss from '@tailwindcss/vite';
import path from 'path';
export default defineConfig({
// ═══ Main Process (Node.js environment) ═══
main: {
plugins: [externalizeDepsPlugin()],
build: {
outDir: 'out/main',
rollupOptions: {
input: {
index: path.resolve(__dirname, 'src/electron/main.ts'),
},
// Keep Remotion + Express packages external (they have native deps)
external: [
'@remotion/bundler',
'@remotion/renderer',
/^@remotion\/compositor/,
'express',
'multer',
'vite',
],
},
},
},
// ═══ Preload Scripts (sandboxed bridge) ═══
preload: {
plugins: [externalizeDepsPlugin()],
build: {
outDir: 'out/preload',
rollupOptions: {
input: {
index: path.resolve(__dirname, 'src/electron/preload.ts'),
},
},
},
},
// ═══ Renderer (React app — browser environment) ═══
renderer: {
root: '.',
plugins: [react(), tailwindcss()],
build: {
outDir: 'out/renderer',
rollupOptions: {
input: {
index: path.resolve(__dirname, 'index.html'),
},
},
},
resolve: {
alias: {
'@': path.resolve(__dirname, '.'),
},
},
server: {
hmr: process.env.DISABLE_HMR !== 'true',
watch: process.env.DISABLE_HMR === 'true' ? null : {},
// Proxy API calls to the embedded Express server
proxy: {
'/api': {
target: 'http://127.0.0.1:3000',
changeOrigin: true,
},
},
},
},
});