glass/build.js
2025-07-12 20:11:20 +09:00

57 lines
1.5 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/ui/app/HeaderController.js', out: 'public/build/header' },
{ in: 'src/ui/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();
}