What is @electron/get?
@electron/get is an npm package designed to facilitate the downloading of Electron binaries. It provides a simple API to fetch Electron versions, which can be useful for setting up Electron-based projects or managing different versions of Electron.
What are @electron/get's main functionalities?
Download a specific version of Electron
This feature allows you to download a specific version of Electron. The code sample demonstrates how to download Electron version 13.1.7 and log the path where it was downloaded.
const { download } = require('@electron/get');
(async () => {
const zipPath = await download('v13.1.7');
console.log(`Downloaded Electron v13.1.7 to ${zipPath}`);
})();
Specify a mirror for downloading
This feature allows you to specify a mirror URL for downloading Electron binaries. The code sample shows how to download Electron version 13.1.7 from a custom mirror.
const { download } = require('@electron/get');
(async () => {
const zipPath = await download('v13.1.7', {
mirrorOptions: {
mirror: 'https://mirror.example.com/electron/'
}
});
console.log(`Downloaded Electron v13.1.7 from mirror to ${zipPath}`);
})();
Get the URL for a specific Electron version
This feature allows you to get the download URL for a specific version of Electron without actually downloading it. The code sample demonstrates how to get the URL for Electron version 13.1.7.
const { getDownloadUrl } = require('@electron/get');
(async () => {
const url = await getDownloadUrl('v13.1.7');
console.log(`Download URL for Electron v13.1.7: ${url}`);
})();
Other packages similar to @electron/get
electron-download
electron-download is another package that helps in downloading Electron binaries. It is often used internally by other Electron-related tools. Compared to @electron/get, it offers similar functionalities but may not be as straightforward to use for some specific tasks.
electron-builder
electron-builder is a complete solution to package and build Electron applications. While its primary focus is on building and packaging, it also includes functionality to download Electron binaries. It is more feature-rich compared to @electron/get but may be overkill if you only need to download Electron binaries.
electron-prebuilt-compile
electron-prebuilt-compile is a package that provides prebuilt Electron binaries with support for custom compilation. It is useful for developers who need to compile Electron with specific settings. Compared to @electron/get, it offers more flexibility but requires more setup.
@electron/get
Download Electron release artifacts

Usage
For full API details, see the API documentation.
Simple: Downloading an Electron Binary ZIP
import { download } from '@electron/get';
const zipFilePath = await download('4.0.4');
Advanced: Downloading a macOS Electron Symbol File
import { downloadArtifact } from '@electron/get';
const zipFilePath = await downloadArtifact({
version: '4.0.4',
platform: 'darwin',
artifactName: 'electron',
artifactSuffix: 'symbols',
arch: 'x64',
});
Specifying a mirror
To specify another location to download Electron assets from, the following options are
available:
mirrorOptions
Object
mirror
String (optional) - The base URL of the mirror to download from.nightlyMirror
String (optional) - The Electron nightly-specific mirror URL.customDir
String (optional) - The name of the directory to download from, often scoped by version number.customFilename
String (optional) - The name of the asset to download.resolveAssetURL
Function (optional) - A function allowing customization of the url used to download the asset.
Anatomy of a download URL, in terms of mirrorOptions
:
https://github.com/electron/electron/releases/download/v4.0.4/electron-v4.0.4-linux-x64.zip
| | | |
------------------------------------------------------- -----------------------------
| |
mirror / nightlyMirror | | customFilename
------
||
customDir
Example:
import { download } from '@electron/get';
const zipFilePath = await download('4.0.4', {
mirrorOptions: {
mirror: 'https://mirror.example.com/electron/',
customDir: 'custom',
customFilename: 'unofficial-electron-linux.zip'
}
});
const nightlyZipFilePath = await download('8.0.0-nightly.20190901', {
mirrorOptions: {
nightlyMirror: 'https://nightly.example.com/',
customDir: 'nightlies',
customFilename: 'nightly-linux.zip'
}
});
customDir
can have the placeholder {{ version }}
, which will be replaced by the version
specified (without the leading v
). For example:
const zipFilePath = await download('4.0.4', {
mirrorOptions: {
mirror: 'https://mirror.example.com/electron/',
customDir: 'version-{{ version }}',
platform: 'linux',
arch: 'x64'
}
});
Using environment variables for mirror options
Mirror options can also be specified via the following environment variables:
ELECTRON_CUSTOM_DIR
- Specifies the custom directory to download from.ELECTRON_CUSTOM_FILENAME
- Specifies the custom file name to download.ELECTRON_MIRROR
- Specifies the URL of the server to download from if the version is not a nightly version.ELECTRON_NIGHTLY_MIRROR
- Specifies the URL of the server to download from if the version is a nightly version.
Overriding the version downloaded
The version downloaded can be overriden by setting the ELECTRON_CUSTOM_VERSION
environment variable.
Setting this environment variable will override the version passed in to download
or downloadArtifact
.
How It Works
This module downloads Electron to a known place on your system and caches it
so that future requests for that asset can be returned instantly. The cache
locations are:
- Linux:
$XDG_CACHE_HOME
or ~/.cache/electron/
- MacOS:
~/Library/Caches/electron/
- Windows:
%LOCALAPPDATA%/electron/Cache
or ~/AppData/Local/electron/Cache/
By default, the module uses got
as the
downloader. As a result, you can use the same options
via downloadOptions
.
Progress Bar
By default, a progress bar is shown when downloading an artifact for more than 30 seconds. To
disable, set the ELECTRON_GET_NO_PROGRESS
environment variable to any non-empty value, or set
quiet
to true
in downloadOptions
. If you need to monitor progress yourself via the API, set
getProgressCallback
in downloadOptions
, which has the same function signature as got
's
downloadProgress
event callback.
Proxies
Downstream packages should utilize the initializeProxy
function to add HTTP(S) proxy support. If
the environment variable ELECTRON_GET_USE_PROXY
is set, it is called automatically.
Debug
debug
is used to display logs and messages.
Set the DEBUG=@electron/get*
environment variable to log additional
debug information from this module.