@electron/packager
Version:
Customize and package your Electron app with OS-specific bundles (.app, .exe, etc.) via JS or CLI
117 lines • 5.16 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.hostInfo = exports.validateElectronApp = exports.normalizePath = exports.baseTempDir = exports.isPlatformMac = exports.ensureArray = exports.createAsarOpts = exports.subOptionWarning = exports.warning = exports.info = exports.generateFinalPath = exports.generateFinalBasename = exports.sanitizeAppName = exports.debug = void 0;
const filenamify_1 = __importDefault(require("filenamify"));
const fs_extra_1 = __importDefault(require("fs-extra"));
const os_1 = __importDefault(require("os"));
const path_1 = __importDefault(require("path"));
const debug_1 = __importDefault(require("debug"));
exports.debug = (0, debug_1.default)('electron-packager');
function sanitizeAppName(name) {
return (0, filenamify_1.default)(name, { replacement: '-' });
}
exports.sanitizeAppName = sanitizeAppName;
function generateFinalBasename(opts) {
return `${sanitizeAppName(opts.name)}-${opts.platform}-${opts.arch}`;
}
exports.generateFinalBasename = generateFinalBasename;
function generateFinalPath(opts) {
return path_1.default.join(opts.out || process.cwd(), generateFinalBasename(opts));
}
exports.generateFinalPath = generateFinalPath;
function info(message, quiet) {
if (!quiet) {
console.info(message);
}
}
exports.info = info;
function warning(message, quiet) {
if (!quiet) {
console.warn(`WARNING: ${message}`);
}
}
exports.warning = warning;
function subOptionWarning(properties, optionName, parameter, value, quiet) {
if (Object.prototype.hasOwnProperty.call(properties, parameter)) {
warning(`${optionName}.${parameter} will be inferred from the main options`, quiet);
}
properties[parameter] = value;
}
exports.subOptionWarning = subOptionWarning;
function createAsarOpts(opts) {
let asarOptions;
if (opts.asar === true) {
asarOptions = {};
}
else if (typeof opts.asar === 'object') {
asarOptions = opts.asar;
}
else if (opts.asar === false || opts.asar === undefined) {
return false;
}
else {
warning(`asar parameter set to an invalid value (${opts.asar}), ignoring and disabling asar`, opts.quiet);
return false;
}
return asarOptions;
}
exports.createAsarOpts = createAsarOpts;
function ensureArray(value) {
return Array.isArray(value) ? value : [value];
}
exports.ensureArray = ensureArray;
function isPlatformMac(platform) {
return platform === 'darwin' || platform === 'mas';
}
exports.isPlatformMac = isPlatformMac;
function baseTempDir(opts) {
return path_1.default.join(opts.tmpdir || os_1.default.tmpdir(), 'electron-packager');
}
exports.baseTempDir = baseTempDir;
/**
* Convert slashes to UNIX-format separators.
*/
function normalizePath(pathToNormalize) {
return pathToNormalize.replace(/\\/g, '/');
}
exports.normalizePath = normalizePath;
/**
* Validates that the application directory contains a package.json file, and that there exists an
* appropriate main entry point file, per the rules of the "main" field in package.json.
*
* See: https://docs.npmjs.com/cli/v6/configuring-npm/package-json#main
*
* @param appDir - the directory specified by the user
* @param bundledAppDir - the directory where the appDir is copied to in the bundled Electron app
*/
async function validateElectronApp(appDir, bundledAppDir) {
(0, exports.debug)('Validating bundled Electron app');
(0, exports.debug)('Checking for a package.json file');
const bundledPackageJSONPath = path_1.default.join(bundledAppDir, 'package.json');
if (!(await fs_extra_1.default.pathExists(bundledPackageJSONPath))) {
const originalPackageJSONPath = path_1.default.join(appDir, 'package.json');
throw new Error(`Application manifest was not found. Make sure "${originalPackageJSONPath}" exists and does not get ignored by your ignore option`);
}
(0, exports.debug)('Checking for the main entry point file');
const packageJSON = await fs_extra_1.default.readJson(bundledPackageJSONPath);
const mainScriptBasename = packageJSON.main || 'index.js';
const mainScript = path_1.default.resolve(bundledAppDir, mainScriptBasename);
if (!(await fs_extra_1.default.pathExists(mainScript))) {
const originalMainScript = path_1.default.join(appDir, mainScriptBasename);
throw new Error(`The main entry point to your app was not found. Make sure "${originalMainScript}" exists and does not get ignored by your ignore option`);
}
(0, exports.debug)('Validation complete');
}
exports.validateElectronApp = validateElectronApp;
function hostInfo() {
// eslint-disable-next-line @typescript-eslint/no-var-requires
const metadata = require('../package.json');
return (`Electron Packager ${metadata.version}\n` +
`Node ${process.version}\n` +
`Host Operating system: ${process.platform} ${os_1.default.release()} (${process.arch})`);
}
exports.hostInfo = hostInfo;
//# sourceMappingURL=common.js.map