57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
const esbuild = require('esbuild');
|
|
const path = require('path');
|
|
|
|
const baseConfig = {
|
|
bundle: true,
|
|
platform: 'browser',
|
|
format: 'esm',
|
|
loader: { '.js': 'jsx' },
|
|
sourcemap: true,
|
|
external: ['electron'],
|
|
define: {
|
|
'process.env.NODE_ENV': `"${process.env.NODE_ENV || 'development'}"`,
|
|
},
|
|
};
|
|
|
|
const entryPoints = [
|
|
{ in: 'src/app/HeaderController.js', out: 'public/build/header' },
|
|
{ in: 'src/app/PickleGlassApp.js', out: 'public/build/content' },
|
|
];
|
|
|
|
async function build() {
|
|
try {
|
|
console.log('Building renderer process code...');
|
|
await Promise.all(entryPoints.map(point => esbuild.build({
|
|
...baseConfig,
|
|
entryPoints: [point.in],
|
|
outfile: `${point.out}.js`,
|
|
})));
|
|
console.log('✅ Renderer builds successful!');
|
|
} catch (e) {
|
|
console.error('Renderer build failed:', e);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
async function watch() {
|
|
try {
|
|
const contexts = await Promise.all(entryPoints.map(point => esbuild.context({
|
|
...baseConfig,
|
|
entryPoints: [point.in],
|
|
outfile: `${point.out}.js`,
|
|
})));
|
|
|
|
console.log('Watching for changes...');
|
|
await Promise.all(contexts.map(context => context.watch()));
|
|
|
|
} catch (e) {
|
|
console.error('Watch mode failed:', e);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
if (process.argv.includes('--watch')) {
|
|
watch();
|
|
} else {
|
|
build();
|
|
}
|