🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

electron-packager

Package Overview
Dependencies
Maintainers
5
Versions
96
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

electron-packager - npm Package Compare versions

Comparing version
17.1.1
to
17.1.2
+40
-2
NEWS.md

@@ -5,10 +5,48 @@ # Electron Packager: Changes by Version

[Unreleased]: https://github.com/electron/electron-packager/compare/v17.0.0...main
[Unreleased]: https://github.com/electron/electron-packager/compare/v17.1.2...main
## [17.1.2] - 2023-08-18
[17.1.2]: https://github.com/electron/electron-packager/compare/v17.1.1...v17.1.2
### Fixed
* Added osx-universal flag to usage.txt (#1533)
* Bumped osx-sign to 1.0.5 to fix an entitlement signing error (#1549)
* Ensured logs are quiet when quiet flag is passed (#1440)
* Pruned electron-nightly even if in dependencies (#1538)
* Changed tsdoc to use @link syntax for index.d.ts (#1450)
* Clarified CLI usage (#1534)
* Fixed typos (#1438)
### Changed
* Updated Galactus (#1441)
* Updated got to clean up yarn audit (#1456)
* Set @wg-ecosystem as CODEOWNERS (#1471)
* Bumped dependencies to clean yarn audit (#1473)
* Updated GitHub actions workflows (#1475)
### Removed
* Removed Linux/ia32 official support (was removed in Electron 19) (#1449)
## [17.1.1] - 2022-11-01
[17.1.1]: https://github.com/electron/electron-packager/compare/v17.1.0...v17.1.1
### Fixed
* Fixed an error allowing packaging twice simultaneously (#1439)
## [17.1.0] - 2022-10-31
[17.1.0]: https://github.com/electron/electron-packager/compare/v17.0.0...v17.1.0
### Changed
* Replaced `electron-notarize` with `@electron/notarize`. The configuration options are unchanged. This migration is purely cosmetic.
* Added new `afterFinalizePackageTargets` hook. This hook exposes the platform/arch combinations that are being packaged when the `arch:all` or `platform:all` options are set.
## [17.0.0]
## [17.0.0] - 2022-10-19

@@ -15,0 +53,0 @@ [17.0.0]: https://github.com/electron/electron-packager/compare/v16.0.0...v17.0.0

+9
-6
{
"name": "electron-packager",
"version": "17.1.1",
"version": "17.1.2",
"description": "Customize and package your Electron app with OS-specific bundles (.app, .exe, etc.) via JS or CLI",

@@ -32,3 +32,3 @@ "main": "src/index.js",

"@electron/notarize": "^1.2.3",
"@electron/osx-sign": "^1.0.1",
"@electron/osx-sign": "^1.0.5",
"@electron/universal": "^1.3.2",

@@ -39,4 +39,4 @@ "cross-spawn-windows-exe": "^1.2.0",

"filenamify": "^4.1.0",
"fs-extra": "^10.1.0",
"galactus": "^0.2.1",
"fs-extra": "^11.1.0",
"galactus": "^1.0.0",
"get-package-info": "^1.0.0",

@@ -59,3 +59,3 @@ "junk": "^3.1.0",

"eslint-config-standard": "^16.0.0",
"eslint-plugin-ava": "^12.0.0",
"eslint-plugin-ava": "^13.2.0",
"eslint-plugin-import": "^2.22.1",

@@ -66,3 +66,3 @@ "eslint-plugin-node": "^11.0.0",

"pkg-up": "^3.0.1",
"sinon": "^14.0.0",
"sinon": "^15.0.1",
"tsd": "^0.14.0",

@@ -140,3 +140,6 @@ "typedoc": "^0.19.0",

"url": "https://github.com/electron/electron-packager?sponsor=1"
},
"resolutions": {
"got": "11.8.5"
}
}
+23
-12

@@ -6,4 +6,5 @@ # Electron Packager

[![CircleCI Build Status](https://circleci.com/gh/electron/electron-packager/tree/main.svg?style=svg)](https://circleci.com/gh/electron/electron-packager/tree/main)
[![electron-nightly Canary](https://github.com/electron/electron-packager/actions/workflows/canary.yml/badge.svg)](https://github.com/electron/electron-packager/actions/workflows/canary.yml)
[![Coverage Status](https://codecov.io/gh/electron/electron-packager/branch/main/graph/badge.svg)](https://codecov.io/gh/electron/electron-packager)
[![NPM](https://badgen.net/npm/v/electron-packager)](https://npm.im/electron-packager)
[![npm](https://badgen.net/npm/v/electron-packager)](https://npm.im/electron-packager)
[![Discord](https://img.shields.io/discord/745037351163527189?color=blueviolet&logo=discord)](https://discord.com/invite/APGC3k5yaH)

@@ -29,3 +30,3 @@

For creating distributables like installers and Linux packages, consider using either [Electron
Forge](https://github.com/electron-userland/electron-forge) (which uses Electron Packager
Forge](https://github.com/electron/forge) (which uses Electron Packager
internally), or one of the [related Electron tools](#distributable-creators), which utilizes

@@ -57,3 +58,3 @@ Electron Packager-created folders as a basis.

This module requires Node.js 10.0 or higher to run.
This module requires Node.js 14.17.5 or higher to run.

@@ -69,13 +70,15 @@ ```sh

Building an Electron app for the Windows target platform requires editing the `Electron.exe` file.
Currently, Electron Packager uses [`node-rcedit`](https://github.com/atom/node-rcedit) to accomplish
Currently, Electron Packager uses [`node-rcedit`](https://github.com/electron/node-rcedit) to accomplish
this. A Windows executable is bundled in that Node package and needs to be run in order for this
functionality to work, so on non-Windows host platforms (not including WSL),
[Wine](https://www.winehq.org/) 1.6 or later needs to be installed. On macOS, it is installable
via [Homebrew](http://brew.sh/).
via [Homebrew](https://brew.sh/).
## Usage
### Via JavaScript
JavaScript API usage can be found in the [API documentation](https://electron.github.io/electron-packager/main/modules/electronpackager.html).
### From the Command Line
### From the command line

@@ -88,9 +91,10 @@ Running Electron Packager from the command line has this basic form:

**Note**: `npx` can be substituted for `yarn` or `npm exec` depending on what package manager and
the version you have installed.
> **Note**:
> `npx` can be substituted for `yarn` or `npm exec` depending on what package manager and
> the version you have installed.
This will:
- Find or download the correct release of Electron
- Use that version of Electron to create an app in `<out>/<appname>-<platform>-<arch>` *(this can be customized via an optional flag)*
* Find or download the correct release of Electron
* Use that version of Electron to create an app in `<out>/<appname>-<platform>-<arch>` *(this can be customized via an optional flag)*

@@ -107,2 +111,9 @@ `--platform` and `--arch` can be omitted, in two cases:

For flags that are structured as objects, you can pass each option as via dot notation as such:
```sh
npx electron-packager --flag.foo="bar"
# will pass in { flag: { foo: "bar"} } as an option to the Electron Packager API
```
If `appname` is omitted, this will use the name specified by "productName" or "name" in the nearest package.json.

@@ -178,3 +189,3 @@

- [Electron Forge](https://github.com/electron-userland/electron-forge) - creates, builds, and distributes modern Electron applications
- [Electron Forge](https://github.com/electron/forge) - creates, builds, and distributes modern Electron applications
- [electron-packager-interactive](https://github.com/Urucas/electron-packager-interactive) - an interactive CLI for electron-packager

@@ -212,3 +223,3 @@ - [grunt-electron](https://github.com/sindresorhus/grunt-electron) - grunt plugin for electron-packager

- [electron-packager-plugin-non-proprietary-codecs-ffmpeg](https://www.npmjs.com/package/electron-packager-plugin-non-proprietary-codecs-ffmpeg) - replaces the normal version of FFmpeg in Electron with a version without proprietary codecs
- [electron-rebuild](https://github.com/electron/electron-rebuild) - rebuilds native Node.js modules
- [@electron/rebuild](https://github.com/electron/rebuild) - rebuilds native Node.js modules
against the packaged Electron version

@@ -55,3 +55,3 @@ 'use strict'

if (args.out === '') {
warning('Specifying --out= without a value is the same as the default value')
warning('Specifying --out= without a value is the same as the default value', args.quiet)
args.out = null

@@ -64,3 +64,3 @@ }

if (args.asar === 'true' || args.asar instanceof Array) {
warning('--asar does not take any arguments, it only has sub-properties (see --help)')
warning('--asar does not take any arguments, it only has sub-properties (see --help)', args.quiet)
args.asar = true

@@ -71,7 +71,7 @@ }

if (args.osxSign === 'true') {
warning('--osx-sign does not take any arguments, it only has sub-properties (see --help)')
warning('--osx-sign does not take any arguments, it only has sub-properties (see --help)', args.quiet)
args.osxSign = true
} else if (typeof args['osx-sign'] === 'object') {
if (Array.isArray(args['osx-sign'])) {
warning('Remove --osx-sign (the bare flag) from the command line, only specify sub-properties (see --help)')
warning('Remove --osx-sign (the bare flag) from the command line, only specify sub-properties (see --help)', args.quiet)
} else {

@@ -86,6 +86,6 @@ // Keep kebab case of sub properties

if (typeof args.osxNotarize !== 'object' || Array.isArray(args.osxNotarize)) {
warning('--osx-notarize does not take any arguments, it only has sub-properties (see --help)')
warning('--osx-notarize does not take any arguments, it only has sub-properties (see --help)', args.quiet)
notarize = false
} else if (!args.osxSign) {
warning('Notarization was enabled but macOS code signing was not, code signing is a requirement for notarization, notarize will not run')
warning('Notarization was enabled but macOS code signing was not, code signing is a requirement for notarization, notarize will not run', args.quiet)
notarize = false

@@ -101,3 +101,3 @@ }

if (args.tmpdir === 'false') {
warning('--tmpdir=false is deprecated, use --no-tmpdir instead')
warning('--tmpdir=false is deprecated, use --no-tmpdir instead', args.quiet)
args.tmpdir = false

@@ -135,5 +135,5 @@ }

if (appPaths.length > 1) {
info(`Wrote new apps to:\n${appPaths.join('\n')}`)
info(`Wrote new apps to:\n${appPaths.join('\n')}`, args.quiet)
} else if (appPaths.length === 1) {
info('Wrote new app to', appPaths[0])
info(`Wrote new app to: ${appPaths[0]}`, args.quiet)
}

@@ -140,0 +140,0 @@ } catch (err) {

@@ -50,3 +50,3 @@ 'use strict'

} else {
warning(`asar parameter set to an invalid value (${opts.asar}), ignoring and disabling asar`)
warning(`asar parameter set to an invalid value (${opts.asar}), ignoring and disabling asar`, opts.quiet)
return false

@@ -68,5 +68,5 @@ }

deprecatedParameter: function deprecatedParameter (properties, oldName, newName, newCLIName) {
deprecatedParameter: function deprecatedParameter (properties, oldName, newName, newCLIName, quiet) {
if (Object.prototype.hasOwnProperty.call(properties, oldName)) {
warning(`The ${oldName} parameter is deprecated, use ${newName} (or --${newCLIName} in the CLI) instead`)
warning(`The ${oldName} parameter is deprecated, use ${newName} (or --${newCLIName} in the CLI) instead`, quiet)
if (!Object.prototype.hasOwnProperty.call(properties, newName)) {

@@ -73,0 +73,0 @@ properties[newName] = properties[oldName]

@@ -73,3 +73,3 @@ 'use strict'

const ignoredOutDirs = generateIgnoredOutDirs(opts)
const pruner = opts.prune ? new prune.Pruner(opts.dir) : null
const pruner = opts.prune ? new prune.Pruner(opts.dir, opts.quiet) : null

@@ -76,0 +76,0 @@ return async function filter (file) {

@@ -68,3 +68,3 @@ // Originally based on the type definitions for electron-packager 14.0

* ignored, or `false` if the file should be kept. *This does not use any of the default ignored
* files/directories listed for the [[ignore]] option.*
* files/directories listed for the {@link ignore} option.*
*/

@@ -108,5 +108,5 @@ type IgnoreFunction = (path: string) => boolean;

/**
* @param buildPath - For [[afterExtract]], the path to the temporary folder where the prebuilt
* Electron binary has been extracted to. For [[afterCopy]] and [[afterPrune]], the path to the
* folder where the Electron app has been copied to. For [[afterComplete]], the final directory
* @param buildPath - For {@link afterExtract}, the path to the temporary folder where the prebuilt
* Electron binary has been extracted to. For {@link afterCopy} and {@link afterPrune}, the path to the
* folder where the Electron app has been copied to. For {@link afterComplete}, the final directory
* of the packaged application.

@@ -198,3 +198,3 @@ * @param electronVersion - the version of Electron that is being bundled with the application.

*
* **Note**: `afterAsar` will only be called if the [[asar]] option is set.
* **Note**: `afterAsar` will only be called if the {@link asar} option is set.
*/

@@ -207,7 +207,7 @@ afterAsar?: HookFunction[];

*
* **Note**: `afterCopy` will not be called if the [[prebuiltAsar]] option is set.
* **Note**: `afterCopy` will not be called if the {@link prebuiltAsar} option is set.
*/
afterCopy?: HookFunction[];
/**
* Functions to be called after the files specified in the [[extraResource]] option have been copied.
* Functions to be called after the files specified in the {@link extraResource} option have been copied.
**/

@@ -225,8 +225,8 @@ afterCopyExtraResources?: HookFunction[];

*
* **Note**: None of these functions will be called if the [[prune]] option is `false` or
* the [[prebuiltAsar]] option is set.
* **Note**: None of these functions will be called if the {@link prune} option is `false` or
* the {@link prebuiltAsar} option is set.
*/
afterPrune?: HookFunction[];
/** When `true`, sets both [[arch]] and [[platform]] to `all`. */
/** When `true`, sets both {@link arch} and {@link platform} to `all`. */
all?: boolean;

@@ -268,4 +268,4 @@ /*

*
* Not required if the [[all]] option is set. If `arch` is set to `all`, all supported
* architectures for the target platforms specified by [[platform]] will be built.
* Not required if the {@link all} option is set. If `arch` is set to `all`, all supported
* architectures for the target platforms specified by {@link platform} will be built.
* Arbitrary combinations of individual architectures are also supported via a comma-delimited

@@ -299,3 +299,3 @@ * string or array of strings. The non-`all` values correspond to the architecture names used

* - `unpackDir` (*string*): Unpacks the dir to the `app.asar.unpacked` directory whose names
* exactly or pattern match this string. The `asar.unpackDir` is relative to [[dir]].
* exactly or pattern match this string. The `asar.unpackDir` is relative to {@link dir}.
*

@@ -311,3 +311,3 @@ * Defaults to `false`.

*
* **Note:** `asar` will have no effect if the [[prebuiltAsar]] option is set.
* **Note:** `asar` will have no effect if the {@link prebuiltAsar} option is set.
*/

@@ -318,3 +318,3 @@ asar?: boolean | AsarOptions;

*
* **Note**: `beforeAsar` will only be called if the [[asar]] option is set.
* **Note**: `beforeAsar` will only be called if the {@link asar} option is set.
*/

@@ -325,11 +325,11 @@ beforeAsar?: HookFunction[];

*
* **Note**: `beforeCopy` will not be called if the [[prebuiltAsar]] option is set.
* **Note**: `beforeCopy` will not be called if the {@link prebuiltAsar} option is set.
*/
beforeCopy?: HookFunction[];
/**
* Functions to be called before the files specified in the [[extraResource]] option are copied.
* Functions to be called before the files specified in the {@link extraResource} option are copied.
**/
beforeCopyExtraResources?: HookFunction[];
/**
* The build version of the application. Defaults to the value of the [[appVersion]] option.
* The build version of the application. Defaults to the value of the {@link appVersion} option.
* Maps to the `FileVersion` metadata property on Windows, and `CFBundleVersion` on macOS.

@@ -351,3 +351,3 @@ */

*
* **Note:** `derefSymlinks` will have no effect if the [[prebuiltAsar]] option is set.
* **Note:** `derefSymlinks` will have no effect if the {@link prebuiltAsar} option is set.
*/

@@ -364,3 +364,3 @@ derefSymlinks?: boolean;

*
* **Note:** `download` sub-options will have no effect if the [[electronZipDir]] option is set.
* **Note:** `download` sub-options will have no effect if the {@link electronZipDir} option is set.
*/

@@ -382,3 +382,3 @@ download?: ElectronDownloadOptions;

*
* **Note:** Setting this option prevents the [[download]] sub-options from being used, as
* **Note:** Setting this option prevents the {@link download} sub-options from being used, as
* the functionality gets skipped over.

@@ -388,5 +388,5 @@ */

/**
* The name of the executable file, sans file extension. Defaults to the value for the [[name]]
* The name of the executable file, sans file extension. Defaults to the value for the {@link name}
* option. For `darwin` or `mas` target platforms, this does not affect the name of the
* `.app` folder - this will use the [[name]] option instead.
* `.app` folder - this will use the {@link name} option instead.
*/

@@ -402,3 +402,3 @@ executableName?: string;

* `electron`, `electron-prebuilt-compile`, or `electron-prebuilt`, but are overridden by other
* options such as [[appVersion]] or [[appBundleId]].
* options such as {@link appVersion} or {@link appBundleId}.
*

@@ -416,3 +416,3 @@ * @category macOS

* `electron`, `electron-prebuilt-compile`, or `electron-prebuilt`, but are overridden by other
* options such as [[appVersion]] or [[appBundleId]].
* options such as {@link appVersion} or {@link appBundleId}.
*

@@ -458,5 +458,5 @@ * @category macOS

*
* The following paths are always ignored (*when you aren't using an [[IgnoreFunction]]*):
* The following paths are always ignored (*when you aren't using an {@link IgnoreFunction}*):
*
* - the directory specified by the [[out]] option
* - the directory specified by the {@link out} option
* - the temporary directory used to build the Electron app

@@ -471,5 +471,5 @@ * - `node_modules/.bin`

* **Note**: Node modules specified in `devDependencies` are ignored by default, via the
* [[prune]] option.
* {@link prune} option.
*
* **Note:** `ignore` will have no effect if the [[prebuiltAsar]] option is set.
* **Note:** `ignore` will have no effect if the {@link prebuiltAsar} option is set.
*/

@@ -479,5 +479,5 @@ ignore?: RegExp | RegExp[] | IgnoreFunction;

* Ignores [system junk files](https://github.com/sindresorhus/junk) when copying the Electron app,
* regardless of the [[ignore]] option.
* regardless of the {@link ignore} option.
*
* **Note:** `junk` will have no effect if the [[prebuiltAsar]] option is set.
* **Note:** `junk` will have no effect if the {@link prebuiltAsar} option is set.
*/

@@ -494,7 +494,7 @@ junk?: boolean;

/**
* If present, notarizes macOS target apps when the host platform is macOS and XCode is installed.
* If present, notarizes macOS target apps when the host platform is macOS and Xcode is installed.
* See [`@electron/notarize`](https://github.com/electron/notarize#method-notarizeopts-promisevoid)
* for option descriptions, such as how to use `appleIdPassword` safely or obtain an API key.
*
* **Requires the [[osxSign]] option to be set.**
* **Requires the {@link osxSign} option to be set.**
*

@@ -505,3 +505,3 @@ * @category macOS

/**
* If present, signs macOS target apps when the host platform is macOS and XCode is installed.
* If present, signs macOS target apps when the host platform is macOS and Xcode is installed.
* When the value is `true`, pass default configuration to the signing module. See

@@ -536,4 +536,4 @@ * [@electron/osx-sign](https://npm.im/@electron/osx-sign#opts---options) for sub-option descriptions and

*
* Not required if the [[all]] option is set. If `platform` is set to `all`, all officially
* supported target platforms for the target architectures specified by the [[arch]] option
* Not required if the {@link all} option is set. If `platform` is set to `all`, all officially
* supported target platforms for the target architectures specified by the {@link arch} option
* will be built. Arbitrary combinations of individual platforms are also supported via a

@@ -561,9 +561,9 @@ * comma-delimited string or array of strings.

*
* - [[asar]]
* - [[afterCopy]]
* - [[afterPrune]]
* - [[derefSymlinks]]
* - [[ignore]]
* - [[junk]]
* - [[prune]]
* - {@link asar}
* - {@link afterCopy}
* - {@link afterPrune}
* - {@link derefSymlinks}
* - {@link ignore}
* - {@link junk}
* - {@link prune}
*/

@@ -583,3 +583,3 @@ prebuiltAsar?: string;

*
* **Note:** `prune` will have no effect if the [[prebuiltAsar]] option is set.
* **Note:** `prune` will have no effect if the {@link prebuiltAsar} option is set.
*/

@@ -586,0 +586,0 @@ prune?: boolean;

@@ -344,3 +344,3 @@ 'use strict'

common.warning('signing is required for mas builds. Provide the osx-sign option, ' +
'or manually sign the app later.')
'or manually sign the app later.', this.opts.quiet)
}

@@ -355,3 +355,3 @@

// Although not signed successfully, the application is packed.
common.warning(`Code sign failed; please retry manually. ${err}`)
common.warning(`Code sign failed; please retry manually. ${err}`, this.opts.quiet)
}

@@ -412,3 +412,3 @@ }

if (signOpts.binaries) {
common.warning('osx-sign.binaries is not an allowed sub-option. Not passing to @electron/osx-sign.')
common.warning('osx-sign.binaries is not an allowed sub-option. Not passing to @electron/osx-sign.', quiet)
delete signOpts.binaries

@@ -415,0 +415,0 @@ }

@@ -175,3 +175,3 @@ 'use strict'

/* istanbul ignore next */
common.warning(`Could not find icon "${iconFilename}", not updating app icon`)
common.warning(`Could not find icon "${iconFilename}", not updating app icon`, this.opts.quiet)
}

@@ -182,3 +182,3 @@ }

if (triggerWarning) {
common.warning(`prebuiltAsar and ${option} are incompatible, ignoring the ${option} option`)
common.warning(`prebuiltAsar and ${option} are incompatible, ignoring the ${option} option`, this.opts.quiet)
}

@@ -189,3 +189,3 @@ }

if (this.asarOptions) {
common.warning('prebuiltAsar has been specified, all asar options will be ignored')
common.warning('prebuiltAsar has been specified, all asar options will be ignored', this.opts.quiet)
}

@@ -192,0 +192,0 @@

@@ -10,2 +10,3 @@ 'use strict'

'electron',
'electron-nightly',
'electron-prebuilt',

@@ -16,4 +17,5 @@ 'electron-prebuilt-compile'

class Pruner {
constructor (dir) {
constructor (dir, quiet) {
this.baseDir = common.normalizePath(dir)
this.quiet = quiet
this.galactus = new galactus.DestroyerOfModules({

@@ -48,3 +50,3 @@ rootDirectory: dir,

if (ELECTRON_MODULES.includes(module.name)) {
common.warning(`Found '${module.name}' but not as a devDependency, pruning anyway`)
common.warning(`Found '${module.name}' but not as a devDependency, pruning anyway`, this.quiet)
return false

@@ -51,0 +53,0 @@ }

@@ -23,2 +23,3 @@ 'use strict'

arm64: '>= 1.8.0',
ia32: '<19.0.0-beta.1',
mips64el: '^1.8.2-beta.5'

@@ -94,3 +95,3 @@ },

if (!allPlatformsOrArchsSpecified(opts)) {
common.warning(message)
common.warning(message, opts.quiet)
}

@@ -97,0 +98,0 @@ }

@@ -101,2 +101,7 @@ Usage: electron-packager <sourcedir> <appname> [options...]

- appleApiIssuer: should contain the API key's issuer
osx-universal (macOS host platform only, requires --arch=universal) Options to pass to `@electron/universal`
when packaging a Universal macOS binary. You must use dot notation to configure a list of sub-properties,
e.g. --osx-universal.mergeASARs="true"
For info on supported values see
https://electron.github.io/electron-packager/main/modules/electronpackager.html#osxuniversaloptions
protocol URL protocol scheme to register the app as an opener of.

@@ -103,0 +108,0 @@ For example, `--protocol=myapp` would register the app to open