UNPKG

@electron-forge/core

Version:

A complete tool for building modern Electron applications

175 lines 14.2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const child_process_1 = require("child_process"); const core_utils_1 = require("@electron-forge/core-utils"); const chalk_1 = __importDefault(require("chalk")); const debug_1 = __importDefault(require("debug")); const listr2_1 = require("listr2"); const electron_executable_1 = __importDefault(require("../util/electron-executable")); const forge_config_1 = __importDefault(require("../util/forge-config")); const hook_1 = require("../util/hook"); const read_package_json_1 = require("../util/read-package-json"); const resolve_dir_1 = __importDefault(require("../util/resolve-dir")); const d = (0, debug_1.default)('electron-forge:start'); exports.default = async ({ dir: providedDir = process.cwd(), appPath = '.', interactive = false, enableLogging = false, args = [], runAsNode = false, inspect = false, inspectBrk = false, }) => { const platform = process.env.npm_config_platform || process.platform; const arch = process.env.npm_config_arch || process.arch; const listrOptions = { concurrent: false, rendererOptions: { collapseErrors: false, }, rendererSilent: !interactive, rendererFallback: Boolean(process.env.DEBUG && process.env.DEBUG.includes('electron-forge')), }; const runner = new listr2_1.Listr([ { title: 'Locating application', task: async (ctx) => { const resolvedDir = await (0, resolve_dir_1.default)(providedDir); if (!resolvedDir) { throw new Error('Failed to locate startable Electron application'); } ctx.dir = resolvedDir; }, }, { title: 'Loading configuration', task: async (ctx) => { const { dir } = ctx; ctx.forgeConfig = await (0, forge_config_1.default)(dir); ctx.packageJSON = await (0, read_package_json_1.readMutatedPackageJson)(dir, ctx.forgeConfig); if (!ctx.packageJSON.version) { throw new Error(`Please set your application's 'version' in '${dir}/package.json'.`); } }, }, { title: 'Preparing native dependencies', task: async ({ dir, forgeConfig, packageJSON }, task) => { await (0, core_utils_1.listrCompatibleRebuildHook)(dir, await (0, core_utils_1.getElectronVersion)(dir, packageJSON), platform, arch, forgeConfig.rebuildConfig, task); }, options: { persistentOutput: true, bottomBar: Infinity, showTimer: true, }, }, { title: `Running ${chalk_1.default.yellow('generateAssets')} hook`, task: async ({ forgeConfig }, task) => { return task.newListr(await (0, hook_1.getHookListrTasks)(forgeConfig, 'generateAssets', platform, arch)); }, }, ], listrOptions); await runner.run(); const { dir, forgeConfig, packageJSON } = runner.ctx; let lastSpawned = null; const forgeSpawn = async () => { let electronExecPath = null; // If a plugin has taken over the start command let's stop here let spawnedPluginChild = await forgeConfig.pluginInterface.overrideStartLogic({ dir, appPath, interactive, enableLogging, args, runAsNode, inspect, inspectBrk, }); if (typeof spawnedPluginChild === 'object' && 'tasks' in spawnedPluginChild) { const innerRunner = new listr2_1.Listr([], listrOptions); for (const task of spawnedPluginChild.tasks) { innerRunner.add(task); } await innerRunner.run(); spawnedPluginChild = spawnedPluginChild.result; } let prefixArgs = []; if (typeof spawnedPluginChild === 'string') { electronExecPath = spawnedPluginChild; } else if (Array.isArray(spawnedPluginChild)) { [electronExecPath, ...prefixArgs] = spawnedPluginChild; } else if (spawnedPluginChild) { await (0, hook_1.runHook)(forgeConfig, 'postStart', spawnedPluginChild); return spawnedPluginChild; } if (!electronExecPath) { electronExecPath = await (0, electron_executable_1.default)(dir, packageJSON); } d('Electron binary path:', electronExecPath); const spawnOpts = { cwd: dir, stdio: 'inherit', env: { ...process.env, ...(enableLogging ? { ELECTRON_ENABLE_LOGGING: 'true', ELECTRON_ENABLE_STACK_DUMPING: 'true', } : {}), }, }; if (runAsNode) { spawnOpts.env.ELECTRON_RUN_AS_NODE = 'true'; } else { delete spawnOpts.env.ELECTRON_RUN_AS_NODE; } if (inspect) { args = ['--inspect'].concat(args); } if (inspectBrk) { args = ['--inspect-brk'].concat(args); } const spawned = (0, child_process_1.spawn)(electronExecPath, // eslint-disable-line @typescript-eslint/no-non-null-assertion prefixArgs.concat([appPath]).concat(args), spawnOpts); await (0, hook_1.runHook)(forgeConfig, 'postStart', spawned); return spawned; }; const forgeSpawnWrapper = async () => { const spawned = await forgeSpawn(); // When the child app is closed we should stop listening for stdin if (spawned) { if (interactive && process.stdin.isPaused()) { process.stdin.resume(); } spawned.on('exit', () => { if (spawned.restarted) { return; } if (interactive && !process.stdin.isPaused()) { process.stdin.pause(); } }); } else if (interactive && !process.stdin.isPaused()) { process.stdin.pause(); } lastSpawned = spawned; return lastSpawned; }; if (interactive) { process.stdin.on('data', async (data) => { if (data.toString().trim() === 'rs' && lastSpawned) { console.info(chalk_1.default.cyan('\nRestarting App\n')); lastSpawned.restarted = true; lastSpawned.kill('SIGTERM'); lastSpawned.emit('restarted', await forgeSpawnWrapper()); } }); process.stdin.resume(); } const spawned = await forgeSpawnWrapper(); if (interactive) console.log(''); return spawned; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL3N0YXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaURBQW9EO0FBRXBELDJEQUE0RjtBQUU1RixrREFBMEI7QUFDMUIsa0RBQTBCO0FBQzFCLG1DQUErQjtBQUUvQixzRkFBbUU7QUFDbkUsd0VBQWtEO0FBQ2xELHVDQUEwRDtBQUMxRCxpRUFBbUU7QUFDbkUsc0VBQTZDO0FBRTdDLE1BQU0sQ0FBQyxHQUFHLElBQUEsZUFBSyxFQUFDLHNCQUFzQixDQUFDLENBQUM7QUFXeEMsa0JBQWUsS0FBSyxFQUFFLEVBQ3BCLEdBQUcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUNoQyxPQUFPLEdBQUcsR0FBRyxFQUNiLFdBQVcsR0FBRyxLQUFLLEVBQ25CLGFBQWEsR0FBRyxLQUFLLEVBQ3JCLElBQUksR0FBRyxFQUFFLEVBQ1QsU0FBUyxHQUFHLEtBQUssRUFDakIsT0FBTyxHQUFHLEtBQUssRUFDZixVQUFVLEdBQUcsS0FBSyxHQUNMLEVBQTRCLEVBQUU7SUFDM0MsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3JFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDekQsTUFBTSxZQUFZLEdBQUc7UUFDbkIsVUFBVSxFQUFFLEtBQUs7UUFDakIsZUFBZSxFQUFFO1lBQ2YsY0FBYyxFQUFFLEtBQUs7U0FDdEI7UUFDRCxjQUFjLEVBQUUsQ0FBQyxXQUFXO1FBQzVCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUM3RixDQUFD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