import { BuildContext, BuildOptions, context } from "esbuild"; const CommonOpts: BuildOptions = { minify: true, bundle: true, sourcemap: "linked", logLevel: "info" }; const NodeCommonOpts: BuildOptions = { ...CommonOpts, format: "cjs", platform: "node", external: ["electron"], target: ["esnext"], }; const contexts = [] as BuildContext[]; async function createContext(options: BuildOptions) { contexts.push(await context(options)); } await Promise.all([ createContext({ ...NodeCommonOpts, entryPoints: ["src/main/index.ts"], outfile: "dist/js/main.js" }), createContext({ ...NodeCommonOpts, entryPoints: ["src/preload/index.ts"], outfile: "dist/js/preload.js" }), createContext({ ...CommonOpts, entryPoints: ["src/renderer/index.ts"], outfile: "dist/js/renderer.js", format: "iife", }) ]); const watch = process.argv.includes("--watch"); if (watch) { await Promise.all(contexts.map(ctx => ctx.watch())); } else { await Promise.all(contexts.map(async ctx => { await ctx.rebuild(); await ctx.dispose(); })); }