fix: production renderer, app icon, dev:web script
- Add Bradly app icon (.icns + .png) for macOS - Fix Electron production mode: Express serves built renderer files - Add extraResource for renderer + remotion-bundle in forge.config.ts - Fix dev:web script to use npx tsx
This commit is contained in:
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 797 KiB |
@@ -11,11 +11,17 @@ const config: ForgeConfig = {
|
||||
packagerConfig: {
|
||||
name: 'Bradly',
|
||||
executableName: 'bradly',
|
||||
icon: './assets/icon',
|
||||
asar: {
|
||||
// Remotion compositor binaries MUST be outside app.asar
|
||||
// because they are native executables that need direct filesystem access
|
||||
unpack: '{**/node_modules/@remotion/compositor-*/**,**/node_modules/@remotion/renderer/**}',
|
||||
},
|
||||
// Include the built renderer and Remotion bundle as extra resources
|
||||
extraResource: [
|
||||
'./out/renderer',
|
||||
'./out/remotion-bundle',
|
||||
],
|
||||
// Ignore development files during packaging
|
||||
ignore: [
|
||||
/^\/src$/,
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@
|
||||
"main": "out/main/index.js",
|
||||
"scripts": {
|
||||
"dev": "electron-vite dev",
|
||||
"dev:web": "tsx server.ts",
|
||||
"dev:web": "npx tsx server.ts",
|
||||
"build": "electron-vite build",
|
||||
"build:web": "vite build && esbuild server.ts --bundle --platform=node --format=cjs --packages=external --sourcemap --outfile=dist/server.cjs",
|
||||
"start": "electron-vite preview",
|
||||
|
||||
@@ -71,6 +71,26 @@ async function startExpressServer(): Promise<void> {
|
||||
const { createExpressApp } = await import('../../server');
|
||||
const expressApp = await createExpressApp();
|
||||
|
||||
// In production Electron, serve the built renderer files
|
||||
if (!process.env.NODE_ENV || process.env.NODE_ENV !== 'development') {
|
||||
const { default: express } = await import('express');
|
||||
// electron-vite builds renderer to out/renderer/
|
||||
const rendererPath = app.isPackaged
|
||||
? path.join(process.resourcesPath, 'renderer')
|
||||
: path.join(__dirname, '..', '..', 'out', 'renderer');
|
||||
|
||||
if (fs.existsSync(rendererPath)) {
|
||||
expressApp.use(express.static(rendererPath));
|
||||
// SPA fallback — serve index.html for all non-API routes
|
||||
expressApp.get('*', (_req: any, res: any) => {
|
||||
res.sendFile(path.join(rendererPath, 'index.html'));
|
||||
});
|
||||
console.log('📦 Serving renderer from:', rendererPath);
|
||||
} else {
|
||||
console.warn('⚠️ Renderer build not found at:', rendererPath);
|
||||
}
|
||||
}
|
||||
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
const server = expressApp.listen(EXPRESS_PORT, '127.0.0.1', () => {
|
||||
console.log(`🚀 Express server on http://127.0.0.1:${EXPRESS_PORT}`);
|
||||
|
||||
Reference in New Issue
Block a user