UNPKG

electron-forge

Version:

A complete tool for building modern Electron applications

170 lines (148 loc) 8.77 kB
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <base data-ice="baseUrl" href="../../"> <title data-ice="title">api/package.js | API Document</title> <link type="text/css" rel="stylesheet" href="css/style.css"> <link type="text/css" rel="stylesheet" href="css/prettify-tomorrow.css"> <script src="script/prettify/prettify.js"></script> <script src="script/manual.js"></script> </head> <body class="layout-container" data-ice="rootContainer"> <header> <a href="./">Home</a> <a href="identifiers.html">Reference</a> <a href="source.html">Source</a> <a data-ice="repoURL" href="https://github.com/electron-userland/electron-forge" class="repo-url-github">Repository</a> <div class="search-box"> <span> <img src="./image/search.png"> <span class="search-input-edge"></span><input class="search-input"><span class="search-input-edge"></span> </span> <ul class="search-result"></ul> </div> </header> <nav class="navigation" data-ice="nav"><div> <ul> <li data-ice="doc"><span data-ice="kind" class="kind-function">F</span><span data-ice="name"><span><a href="function/index.html#static-function-import">import</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-function">F</span><span data-ice="name"><span><a href="function/index.html#static-function-init">init</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-function">F</span><span data-ice="name"><span><a href="function/index.html#static-function-install">install</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-function">F</span><span data-ice="name"><span><a href="function/index.html#static-function-lint">lint</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-function">F</span><span data-ice="name"><span><a href="function/index.html#static-function-make">make</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-function">F</span><span data-ice="name"><span><a href="function/index.html#static-function-package">package</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-function">F</span><span data-ice="name"><span><a href="function/index.html#static-function-publish">publish</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-function">F</span><span data-ice="name"><span><a href="function/index.html#static-function-start">start</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-typedef">T</span><span data-ice="name"><span><a href="typedef/index.html#static-typedef-ImportOptions">ImportOptions</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-typedef">T</span><span data-ice="name"><span><a href="typedef/index.html#static-typedef-InitOptions">InitOptions</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-typedef">T</span><span data-ice="name"><span><a href="typedef/index.html#static-typedef-InstallOptions">InstallOptions</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-typedef">T</span><span data-ice="name"><span><a href="typedef/index.html#static-typedef-LintOptions">LintOptions</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-typedef">T</span><span data-ice="name"><span><a href="typedef/index.html#static-typedef-MakeOptions">MakeOptions</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-typedef">T</span><span data-ice="name"><span><a href="typedef/index.html#static-typedef-PackageOptions">PackageOptions</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-typedef">T</span><span data-ice="name"><span><a href="typedef/index.html#static-typedef-PublishOptions">PublishOptions</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-typedef">T</span><span data-ice="name"><span><a href="typedef/index.html#static-typedef-StartOptions">StartOptions</a></span></span></li> </ul> </div> </nav> <div class="content" data-ice="content"><h1 data-ice="title">api/package.js</h1> <pre class="source-code line-number raw-source-code"><code class="prettyprint linenums" data-ice="content">import &apos;colors&apos;; import fs from &apos;fs-promise&apos;; import glob from &apos;glob&apos;; import path from &apos;path&apos;; import pify from &apos;pify&apos;; import packager from &apos;electron-packager&apos;; import ora from &apos;ora&apos;; import electronHostArch from &apos;../util/electron-host-arch&apos;; import getForgeConfig from &apos;../util/forge-config&apos;; import packagerCompileHook from &apos;../util/compile-hook&apos;; import readPackageJSON from &apos;../util/read-package-json&apos;; import rebuildHook from &apos;../util/rebuild&apos;; import resolveDir from &apos;../util/resolve-dir&apos;; /** * @typedef {Object} PackageOptions * @property {string} [dir=process.cwd()] The path to the app to package * @property {boolean} [interactive=false] Whether to use sensible defaults or prompt the user visually * @property {string} [arch=process.arch] The target arch * @property {string} [platform=process.platform] The target platform. NOTE: This is limited to be the current platform at the moment */ /** * Package an Electron application into an platform dependent format. * * @param {PackageOptions} providedOptions - Options for the Package method * @return {Promise} Will resolve when the package process is complete */ export default async (providedOptions = {}) =&gt; { // eslint-disable-next-line prefer-const, no-unused-vars let { dir, interactive, arch, platform } = Object.assign({ dir: process.cwd(), interactive: false, arch: electronHostArch(), platform: process.platform, }, providedOptions); let prepareSpinner = ora.ora(`Preparing to Package Application for arch: ${(arch === &apos;all&apos; ? &apos;ia32&apos; : arch).cyan}`).start(); let prepareCounter = 0; dir = await resolveDir(dir); if (!dir) { // eslint-disable-next-line no-throw-literal throw &apos;Failed to locate compilable Electron application&apos;; } const packageJSON = await readPackageJSON(dir); const forgeConfig = await getForgeConfig(dir); let packagerSpinner; const packageOpts = Object.assign({ asar: false, overwrite: true, }, forgeConfig.electronPackagerConfig, { afterCopy: [async (buildPath, electronVersion, pPlatform, pArch, done) =&gt; { if (packagerSpinner) { packagerSpinner.succeed(); prepareCounter += 1; prepareSpinner = ora.ora(`Preparing to Package Application for arch: ${(prepareCounter === 2 ? &apos;armv7l&apos; : &apos;x64&apos;).cyan}`).start(); } await fs.remove(path.resolve(buildPath, &apos;node_modules/electron-compile/test&apos;)); const bins = await pify(glob)(path.join(buildPath, &apos;**/.bin/**/*&apos;)); for (const bin of bins) { await fs.remove(bin); } done(); }, async (...args) =&gt; { prepareSpinner.succeed(); await packagerCompileHook(dir, ...args); }, async (buildPath, electronVersion, pPlatform, pArch, done) =&gt; { await rebuildHook(buildPath, electronVersion, pPlatform, pArch); packagerSpinner = ora.ora(&apos;Packaging Application&apos;).start(); done(); }].concat(forgeConfig.electronPackagerConfig.afterCopy ? forgeConfig.electronPackagerConfig.afterCopy.map(item =&gt; (typeof item === &apos;string&apos; ? require(item) : item) ) : []), afterExtract: forgeConfig.electronPackagerConfig.afterExtract ? forgeConfig.electronPackagerConfig.afterExtract.map(item =&gt; (typeof item === &apos;string&apos; ? require(item) : item) ) : [], dir, arch, platform, out: path.resolve(dir, &apos;out&apos;), version: packageJSON.devDependencies[&apos;electron-prebuilt-compile&apos;], }); packageOpts.quiet = true; if (typeof packageOpts.asar === &apos;object&apos; &amp;&amp; packageOpts.unpack) { packagerSpinner.fail(); throw new Error(&apos;electron-compile does not support asar.unpack yet. Please use asar.unpackDir&apos;); } await pify(packager)(packageOpts); packagerSpinner.succeed(); }; </code></pre> </div> <footer class="footer"> Generated by <a href="https://esdoc.org">ESDoc<span data-ice="esdocVersion">(0.5.2)</span><img src="./image/esdoc-logo-mini-black.png"></a> </footer> <script src="script/search_index.js"></script> <script src="script/search.js"></script> <script src="script/pretty-print.js"></script> <script src="script/inherited-summary.js"></script> <script src="script/test-summary.js"></script> <script src="script/inner-link.js"></script> <script src="script/patch-for-local.js"></script> </body> </html>