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) } })