const fs = require('fs'); const path = require('path'); const webpack = require('webpack'); const configPath = process.argv[2]; const outPath = path.resolve(process.argv[3]); const config = require(configPath); config.output = { path: path.dirname(outPath), filename: path.basename(outPath) }; const { wrapInitWithProfilingTimeout, wrapInitWithTryCatch, ...webpackConfig } = config; webpack(webpackConfig, (err, stats) => { if (err) { console.error(err); process.exit(1); } else if (stats.hasErrors()) { console.error(stats.toString('normal')); process.exit(1); } else { let contents = fs.readFileSync(outPath, 'utf8'); if (wrapInitWithTryCatch) { contents = `try { ${contents} } catch (err) { console.error('Electron ${webpackConfig.output.filename} script failed to run'); console.error(err); }`; } if (wrapInitWithProfilingTimeout) { contents = `function ___electron_webpack_init__() { ${contents} }; if ((globalThis.process || binding.process).argv.includes("--profile-electron-init")) { setTimeout(___electron_webpack_init__, 0); } else { ___electron_webpack_init__(); }`; } fs.writeFileSync(outPath, contents); process.exit(0); } });