Skip to content

app builder lib.Interface.Configuration

Electron-Builder / app-builder-lib / Configuration

Configuration Options

Extends

Properties

afterAllArtifactBuild?

readonly optional afterAllArtifactBuild: null | string | Hook<BuildResult, string[]>

The function (or path to file or module id) to be run after all artifacts are built.

(buildResult: BuildResult): Promise<Array<string>> | Array<string>

Configuration in the same way as afterPack (see above).

myAfterAllArtifactBuild.js

exports.default = function () {
  // you can return additional files to publish
  return ["/path/to/additional/result/file"]
}

Inherited from

Hooks.afterAllArtifactBuild


afterExtract?

readonly optional afterExtract: null | string | Hook<PackContext, any>

The function (or path to file or module id) to be run after the prebuilt Electron binary has been extracted to the output directory Same setup as beforePack

Inherited from

Hooks.afterExtract


afterPack?

readonly optional afterPack: null | string | Hook<PackContext, any>

The function (or path to file or module id) to be run after pack (but before pack into distributable format and sign). Same setup as beforePack

Inherited from

Hooks.afterPack


afterSign?

readonly optional afterSign: null | string | Hook<PackContext, any>

The function (or path to file or module id) to be run after pack and sign (but before pack into distributable format). Same setup as beforePack

Inherited from

Hooks.afterSign


apk?

readonly optional apk: null | LinuxTargetSpecificOptions

Inherited from

CommonConfiguration.apk


appId?

readonly optional appId: null | string

The application id. Used as CFBundleIdentifier for MacOS and as Application User Model ID for Windows (NSIS target only, Squirrel.Windows not supported). It is strongly recommended that an explicit ID is set.

Default

com.electron.${name}

Inherited from

PlatformSpecificBuildOptions.appId


appImage?

readonly optional appImage: null | AppImageOptions

AppImage options.

Inherited from

CommonConfiguration.appImage


appx?

readonly optional appx: null | AppXOptions

Inherited from

CommonConfiguration.appx


appxManifestCreated?

readonly optional appxManifestCreated: null | string | Hook<string, any>

Appx manifest created on disk - not packed into .appx package yet.

Inherited from

Hooks.appxManifestCreated


artifactBuildCompleted?

readonly optional artifactBuildCompleted: null | string | Hook<ArtifactCreated, any>

The function (or path to file or module id) to be run on artifact build completed. Same setup as beforePack

Inherited from

Hooks.artifactBuildCompleted


artifactBuildStarted?

readonly optional artifactBuildStarted: null | string | Hook<ArtifactBuildStarted, any>

The function (or path to file or module id) to be run on artifact build start. Same setup as beforePack

Inherited from

Hooks.artifactBuildStarted


artifactName?

readonly optional artifactName: null | string

The artifact file name template. Defaults to ${productName}-${version}.${ext} (some target can have other defaults, see corresponding options).

Inherited from

PlatformSpecificBuildOptions.artifactName


asar?

readonly optional asar: null | boolean | AsarOptions

Whether to package the application’s source code into an archive, using Electron’s archive format.

Node modules, that must be unpacked, will be detected automatically, you don’t need to explicitly set asarUnpack - please file an issue if this doesn’t work.

Default

true

Inherited from

PlatformSpecificBuildOptions.asar


asarUnpack?

readonly optional asarUnpack: null | string | string[]

A glob patterns relative to the app directory, which specifies which files to unpack when creating the asar archive.

Inherited from

PlatformSpecificBuildOptions.asarUnpack


beforeBuild?

readonly optional beforeBuild: null | string | Hook<BeforeBuildContext, boolean | void>

The function (or path to file or module id) to be run before dependencies are installed or rebuilt. Works when npmRebuild is set to true. Resolving to false will skip dependencies install or rebuild.

If provided and node_modules are missing, it will not invoke production dependencies check.

Inherited from

Hooks.beforeBuild


beforePack?

readonly optional beforePack: null | string | Hook<PackContext, any>

The function (or path to file or module id) to be run before pack.

(context: BeforePackContext): Promise<any> | any

As function

beforePack: async (context) => {
  // your code
}

Because in a configuration file you cannot use JavaScript, can be specified as a path to file or module id. Function must be exported as default export.

"build": {
  "beforePack": "./myBeforePackHook.js"
}

File myBeforePackHook.js in the project root directory:

myBeforePackHook.js

exports.default = async function(context) {
  // your custom code
}

Inherited from

Hooks.beforePack


buildDependenciesFromSource?

optional buildDependenciesFromSource: boolean

Whether to build the application native dependencies from source.

Default

false

Inherited from

CommonConfiguration.buildDependenciesFromSource


buildNumber?

readonly optional buildNumber: null | string

The build number. Maps to the --iteration flag for builds using FPM on Linux. If not defined, then it will fallback to BUILD_NUMBER or TRAVIS_BUILD_NUMBER or APPVEYOR_BUILD_NUMBER or CIRCLE_BUILD_NUM or BUILD_BUILDNUMBER or CI_PIPELINE_IID env.

Inherited from

CommonConfiguration.buildNumber


buildVersion?

readonly optional buildVersion: null | string

The build version. Maps to the CFBundleVersion on macOS, and FileVersion metadata property on Windows. Defaults to the version. If buildVersion is not defined and buildNumber (or one of the buildNumber envs) is defined, it will be used as a build version (version.buildNumber).

Inherited from

CommonConfiguration.buildVersion


compression?

readonly optional compression: null | CompressionLevel

The compression level. If you want to rapidly test build, store can reduce build time significantly. maximum doesn’t lead to noticeable size difference, but increase build time.

Default

normal

Inherited from

PlatformSpecificBuildOptions.compression


readonly optional copyright: null | string

The human-readable copyright line for the app.

Default

Copyright © year ${author}

Inherited from

CommonConfiguration.copyright


cscKeyPassword?

optional cscKeyPassword: null | string

Inherited from

PlatformSpecificBuildOptions.cscKeyPassword


optional cscLink: null | string

Inherited from

PlatformSpecificBuildOptions.cscLink


deb?

readonly optional deb: null | DebOptions

Debian package options.

Inherited from

CommonConfiguration.deb


defaultArch?

readonly optional defaultArch: string

Inherited from

PlatformSpecificBuildOptions.defaultArch


detectUpdateChannel?

readonly optional detectUpdateChannel: boolean

Whether to infer update channel from application version pre-release components. e.g. if version 0.12.1-alpha.1, channel will be set to alpha. Otherwise to latest.

Default

true

Inherited from

PlatformSpecificBuildOptions.detectUpdateChannel


directories?

readonly optional directories: null | MetadataDirectories

Directories for build resources

Inherited from

CommonConfiguration.directories


disableDefaultIgnoredFiles?

optional disableDefaultIgnoredFiles: null | boolean

Whether to exclude all default ignored files(https://www.electron.build/contents#files) and options. Defaults to false.

Default

false

Inherited from

PlatformSpecificBuildOptions.disableDefaultIgnoredFiles


disableSanityCheckAsar?

readonly optional disableSanityCheckAsar: boolean

Whether to disable sanity check asar package (useful for custom electron forks that implement their own encrypted integrity validation)

Default

false

dmg?

readonly optional dmg: null | DmgOptions

macOS DMG options.

Inherited from

CommonConfiguration.dmg


downloadAlternateFFmpeg?

readonly optional downloadAlternateFFmpeg: boolean

Whether to download the alternate FFmpeg library from Electron’s release assets and replace the default FFmpeg library prior to signing

Inherited from

CommonConfiguration.downloadAlternateFFmpeg


electronBranding?

readonly optional electronBranding: ElectronBrandingOptions

The branding used by Electron’s distributables. This is needed if a fork has modified Electron’s BRANDING.json file.


electronCompile?

readonly optional electronCompile: boolean

Whether to use electron-compile to compile app. Defaults to true if electron-compile in the dependencies. And false if in the devDependencies or doesn’t specified.


electronDist?

readonly optional electronDist: string | CustomElectronDistributable

Returns the path to custom Electron build (e.g. ~/electron/out/R). Zip files must follow the pattern electron-v${version}-${platformName}-${arch}.zip, otherwise it will be assumed to be an unpacked Electron app directory


electronDownload?

readonly optional electronDownload: ElectronDownloadOptions

The electron-download options.


electronLanguages?

readonly optional electronLanguages: string | string[]

The electron locales to keep. By default, all Electron locales used as-is.

Inherited from

PlatformSpecificBuildOptions.electronLanguages


electronUpdaterCompatibility?

readonly optional electronUpdaterCompatibility: null | string

The electron-updater compatibility semver range.

Inherited from

PlatformSpecificBuildOptions.electronUpdaterCompatibility


electronVersion?

optional electronVersion: null | string

The version of electron you are packaging for. Defaults to version of electron, electron-prebuilt or electron-prebuilt-compile dependency.


executableName?

readonly optional executableName: null | string

The executable name. Defaults to productName.

Inherited from

PlatformSpecificBuildOptions.executableName


extends?

optional extends: null | string | string[]

The name of a built-in configuration preset (currently, only react-cra is supported) or any number of paths to config files (relative to project dir).

The latter allows to mixin a config from multiple other configs, as if you Object.assign them, but properly combine files glob patterns.

If react-scripts in the app dependencies, react-cra will be set automatically. Set to null to disable automatic detection.


extraFiles?

optional extraFiles: null | string | FileSet | (string | FileSet)[]

The same as extraResources but copy into the app’s content directory (Contents for MacOS, root directory for Linux and Windows).

Inherited from

PlatformSpecificBuildOptions.extraFiles


extraMetadata?

readonly optional extraMetadata: any

Inject properties to package.json.

Inherited from

CommonConfiguration.extraMetadata


extraResources?

optional extraResources: null | string | FileSet | (string | FileSet)[]

A glob patterns relative to the project directory, when specified, copy the file or directory with matching names directly into the app’s resources directory (Contents/Resources for MacOS, resources for Linux and Windows).

File patterns (and support for from and to fields) the same as for files.

Inherited from

PlatformSpecificBuildOptions.extraResources


fileAssociations?

readonly optional fileAssociations: FileAssociation | FileAssociation[]

The file associations.

Inherited from

PlatformSpecificBuildOptions.fileAssociations


files?

optional files: null | string | FileSet | (string | FileSet)[]

A glob patterns relative to the app directory, which specifies which files to include when copying files to create the package.

Defaults to:

[
"**/*",
"!**/node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme}",
"!**/node_modules/*/{test,__tests__,tests,powered-test,example,examples}",
"!**/node_modules/*.d.ts",
"!**/node_modules/.bin",
"!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}",
"!.editorconfig",
"!**/._*",
"!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,.gitignore,.gitattributes}",
"!**/{__pycache__,thumbs.db,.flowconfig,.idea,.vs,.nyc_output}",
"!**/{appveyor.yml,.travis.yml,circle.yml}",
"!**/{npm-debug.log,yarn.lock,.yarn-integrity,.yarn-metadata.json}"
]

Development dependencies are never copied in any case. You don’t need to ignore it explicitly. Hidden files are not ignored by default, but all files that should be ignored, are ignored by default.

Default pattern **/* is not added to your custom if some of your patterns is not ignore (i.e. not starts with !). package.json and **/node_modules/**/* (only production dependencies will be copied) is added to your custom in any case. All default ignores are added in any case — you don’t need to repeat it if you configure own patterns.

May be specified in the platform options (e.g. in the mac).

You may also specify custom source and destination directories by using FileSet objects instead of simple glob patterns.

[
{
 "from": "path/to/source",
 "to": "path/to/destination",
 "filter": ["**/*", "!foo/*.js"]
}
]

You can use file macros in the from and to fields as well. from and to can be files and you can use this to rename a file while packaging.

Inherited from

PlatformSpecificBuildOptions.files


flatpak?

readonly optional flatpak: null | FlatpakOptions

Flatpak options.

Inherited from

CommonConfiguration.flatpak


forceCodeSigning?

readonly optional forceCodeSigning: boolean

Whether to fail if the application is not signed (to prevent unsigned app if code signing configuration is not correct).

Default

false

Inherited from

PlatformSpecificBuildOptions.forceCodeSigning


framework?

readonly optional framework: null | string

The framework name. One of electron, proton, libui. Defaults to electron.


freebsd?

readonly optional freebsd: null | LinuxTargetSpecificOptions

Inherited from

CommonConfiguration.freebsd


generateUpdatesFilesForAllChannels?

readonly optional generateUpdatesFilesForAllChannels: boolean

Please see Building and Releasing using Channels.

Default

false

Inherited from

PlatformSpecificBuildOptions.generateUpdatesFilesForAllChannels


icon?

readonly optional icon: null | string

Inherited from

PlatformSpecificBuildOptions.icon


includePdb?

readonly optional includePdb: boolean

Whether to include PDB files.

Default

false

Inherited from

CommonConfiguration.includePdb


includeSubNodeModules?

optional includeSubNodeModules: boolean

Whether to include all of the submodules node_modules directories

Default

false

launchUiVersion?

readonly optional launchUiVersion: null | string | boolean

libui-based frameworks only The version of LaunchUI you are packaging for. Applicable for Windows only. Defaults to version suitable for used framework version.


linux?

readonly optional linux: null | LinuxConfiguration

Options related to how build Linux targets.

Inherited from

CommonConfiguration.linux


mac?

readonly optional mac: null | MacConfiguration

Options related to how build macOS targets.

Inherited from

CommonConfiguration.mac


mas?

readonly optional mas: null | MasConfiguration

MAS (Mac Application Store) options.

Inherited from

CommonConfiguration.mas


masDev?

readonly optional masDev: null | MasConfiguration

MAS (Mac Application Store) development options (mas-dev target).

Inherited from

CommonConfiguration.masDev


msiProjectCreated?

readonly optional msiProjectCreated: null | string | Hook<string, any>

MSI project created on disk - not packed into .msi package yet.

Inherited from

Hooks.msiProjectCreated


nativeRebuilder?

readonly optional nativeRebuilder: null | "legacy" | "sequential" | "parallel"

Use legacy app-builder binary for installing native dependencies, or @electron/rebuild in sequential or parallel compilation modes.

Default

sequential

Inherited from

CommonConfiguration.nativeRebuilder


nodeGypRebuild?

readonly optional nodeGypRebuild: boolean

Whether to execute node-gyp rebuild before starting to package the app.

Don’t use npm (neither .npmrc) for configuring electron headers. Use electron-builder node-gyp-rebuild instead.

Default

false

Inherited from

CommonConfiguration.nodeGypRebuild


nodeVersion?

readonly optional nodeVersion: null | string

libui-based frameworks only The version of NodeJS you are packaging for. You can set it to current to set the Node.js version that you use to run.


npmArgs?

readonly optional npmArgs: null | string | string[]

Additional command line arguments to use when installing app native deps.

Inherited from

CommonConfiguration.npmArgs


npmRebuild?

readonly optional npmRebuild: boolean

Whether to rebuild native dependencies before starting to package the app.

Default

true

Inherited from

CommonConfiguration.npmRebuild


nsis?

readonly optional nsis: null | NsisOptions

Inherited from

CommonConfiguration.nsis


nsisWeb?

readonly optional nsisWeb: null | NsisWebOptions

Inherited from

CommonConfiguration.nsisWeb


onNodeModuleFile?

readonly optional onNodeModuleFile: null | string | Hook<string, boolean | void>

The function (or path to file or module id) to be run on each node module file. Returning true/false will determine whether to force include or to use the default copier logic

Inherited from

Hooks.onNodeModuleFile


p5p?

readonly optional p5p: null | LinuxTargetSpecificOptions

Inherited from

CommonConfiguration.p5p


pacman?

readonly optional pacman: null | LinuxTargetSpecificOptions

Inherited from

CommonConfiguration.pacman


pkg?

readonly optional pkg: null | PkgOptions

macOS PKG options.

Inherited from

CommonConfiguration.pkg


portable?

readonly optional portable: null | PortableOptions

Inherited from

CommonConfiguration.portable


productName?

readonly optional productName: null | string

As name, but allows you to specify a product name for your executable which contains spaces and other special characters not allowed in the name property. If not specified inside of the build configuration, productName property defined at the top level of package.json is used. If not specified at the top level of package.json, name property is used.

Inherited from

CommonConfiguration.productName


protocols?

readonly optional protocols: Protocol | Protocol[]

The URL protocol schemes.

Inherited from

PlatformSpecificBuildOptions.protocols


publish?

optional publish: Publish

Inherited from

PlatformSpecificBuildOptions.publish


releaseInfo?

readonly optional releaseInfo: ReleaseInfo

The release info. Intended for command line usage:

-c.releaseInfo.releaseNotes="new features"

Inherited from

PlatformSpecificBuildOptions.releaseInfo


removePackageKeywords?

readonly optional removePackageKeywords: boolean

Whether to remove keywords field from package.json files.

Default

true

Inherited from

CommonConfiguration.removePackageKeywords


removePackageScripts?

readonly optional removePackageScripts: boolean

Whether to remove scripts field from package.json files.

Default

true

Inherited from

CommonConfiguration.removePackageScripts


rpm?

readonly optional rpm: null | LinuxTargetSpecificOptions

Inherited from

CommonConfiguration.rpm


snap?

readonly optional snap: null | SnapOptions

Snap options.

Inherited from

CommonConfiguration.snap


squirrelWindows?

readonly optional squirrelWindows: null | SquirrelWindowsOptions

Inherited from

CommonConfiguration.squirrelWindows


target?

readonly optional target: null | string | TargetConfiguration | (string | TargetConfiguration)[]

Inherited from

PlatformSpecificBuildOptions.target


win?

readonly optional win: null | WindowsConfiguration

Options related to how build Windows targets.

Inherited from

CommonConfiguration.win