Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

electron-forge

electron-userland5.2kMITdeprecated5.2.4

Electron Forge has a new home at @electron-forge/cli and a new major version. See https://www.electronjs.org/blog/forge-v6-release

A complete tool for building modern Electron applications

readme

Electron Forge

Linux/macOS Build Status Windows Build status Commitizen friendly npm version npm license status

A complete tool for building modern Electron applications.

Electron Forge unifies the existing (and well maintained) build tools for Electron development into a simple, easy to use package so that anyone can jump right in to Electron development.


Website | Goals | Usage | Configuration | Support | Contributing | Changelog

Getting Started

Note: Electron Forge requires Node 6 or above, plus git installed.

npm install -g electron-forge
electron-forge init my-new-app
cd my-new-app
npm start

Alternatively, if you have a more recent version of npm or yarn, you can use npx, or yarn create.

npx electron-forge init my-new-app
# or
yarn create electron-app my-new-app

# then
cd my-new-app
npm start

Project Goals

  1. Starting with Electron should be as simple as a single command.
  2. Developers shouldn't have to worry about babel, browserify, webpack, native module rebuilding, etc. Everything should "just work" for them out of the box.
  3. Everything from creating the project to packaging the project for release should be handled by one dependency in a standard way while still offering users maximum choice and freedom.

With these goals in mind, under the hood this project uses, among others:

  • electron-compile: a tool that lets you use modern and futuristic languages inside Electron without worrying about transpiling or build tooling.
  • electron-rebuild: Automatically recompiles native Node.js modules against the correct Electron version.
  • Electron Packager: Customizes and bundles your Electron app to get it ready for distribution.

Usage

Starting a new Project

npm install -g electron-forge
electron-forge init my-new-project

This command will generate a brand new project folder and install all your Node module dependencies, so you will be all set to go. By default we will also install the airbnb linting modules. If you want to follow the standard linting rules instead, use the --lintstyle=standard argument.

You can also start a project with your favorite framework with the --template argument. E.g. --template=react.

If you'd like to have pre-made configuration files for Travis CI and AppVeyor CI to automatically build and deploy distributables to GitHub, use the --copy-ci-files argument.

Importing an existing Project

electron-forge import existing-project-directory

Given an existing Electron project, this command will attempt to interactively navigate through the process of importing it to the Electron Forge format, so the commands listed below can be used. This includes being prompted to remove existing Electron build tools in favor of Electron Forge equivalents.

Launching your Project

electron-forge start

Any arguments after "start" will be passed through to your application when it's launched.

Packaging your Project

electron-forge package

Yes, it really is that simple. If you want to specify platform / arch, use the --platform=<platform> and --arch=<arch> arguments.

Generating a distributable for your Project

electron-forge make

This will generate platform specific distributables (installers, distribution packages, etc.) for you. By default, you can only generate distributables for your current platform. If you want to specify platform / arch, use the --platform=<platform> and --arch=<arch> arguments, but please note that some distributables are not available to be built on anything but the platform that is targeted. For example, appx (Windows Store) distributables can only be built on Windows.

Linting your Project

electron-forge lint

Publishing your Project

electron-forge publish

This will make your project and publish any generated artifacts. By default it will publish to GitHub, but you can change the publish target(s) with --target=YourTarget,YourTarget2, where the value is a comma-separated list of targets.

Config

Once you have generated a project, your package.json file will have some default forge configuration. Below is the reference structure for this config object:

{
  "make_targets": {
    "win32": ["squirrel"], // An array of win32 make targets
    "darwin": ["zip", "dmg"], // An array of darwin make targets
    "linux": ["deb", "rpm", "flatpak", "snap"] // An array of linux make targets
  },
  "electronPackagerConfig": {},
  "electronRebuildConfig": {},
  "electronWinstallerConfig": {},
  "electronInstallerDMG": {},
  "electronInstallerFlatpak": {},
  "electronInstallerDebian": {},
  "electronInstallerRedhat": {},
  "electronInstallerSnap": {}
}

Possible make targets

Target Name Available Platforms Description Configurable Options Default? Requirements
zip All Zips your packaged application None Yes zip on Darwin/Linux
squirrel Windows Generates an installer and .nupkg files for Squirrel.Windows electronWinstallerConfig Yes
appx Windows Generates a Windows Store package windowsStoreConfig No
wix Windows Generates a traditional MSI file electronWixMSIConfig No Wix Toolit
dmg Darwin Generates a DMG file electronInstallerDMG No
deb Linux Generates a Debian package electronInstallerDebian Yes fakeroot and dpkg
rpm Linux Generates an RPM package electronInstallerRedhat Yes rpm
flatpak Linux Generates a Flatpak file electronInstallerFlatpak No flatpak-builder
snap Linux Generates a Snap file electronInstallerSnap No snapcraft

Configuring package

You can set electronPackagerConfig with any of the options from Electron Packager, except:

  • all
  • arch (use the --arch Forge command line argument instead, so it's available to all of Forge)
  • asar.unpack (use asar.unpackDir instead)
  • dir (use the cwd Forge command line argument instead, so it's available to all of Forge)
  • electronVersion (uses the exact version specified for electron-prebuilt-compile in your devDependencies)
  • out
  • platform (use the --platform Forge command line argument instead, so it's available to all of Forge)
  • quiet

You can set electronRebuildConfig with any of the options from Electron Rebuild, except:

  • electronVersion/--version (uses the exact version specified for electron-prebuilt-compile in your devDependencies)
  • arch/--arch (use the --arch Forge command line argument instead, so it's available to all of Forge)
  • buildPath/--module-dir (uses your project's node_modules)

NOTE: You can also set your forge config property of your package.json to point to a JS file that exports the config object:

{
  ...
  "config": {
    "forge": "./forge.config.js"
  }
  ...
}

NOTE: If you use the JSON object then the afterCopy and afterExtract options are mapped to require calls internally, so provide a path to a file that exports your hooks and they will still run. If you use the JS file method mentioned above then you can use functions normally.

Possible publish targets

Target Name Description Required Config
GitHub Releases - github Makes a new release for the current version (if required) and uploads the make artifacts as release assets process.env.GITHUB_TOKEN - A personal access token with access to your releases
forge.github_repository.owner - The owner of the GitHub repository
forge.github_repository.name - The name of the GitHub repository
forge.github_repository.draft - Create the release as a draft, defaults to true
forge.github_repository.prerelease - Identify the release as a prerelease, defaults to false
forge.github_repository.options - An Object of connection options, e.g., GitHub Enterprise settings or HTTP proxy URL
Amazon S3 - s3 Uploads your artifacts to the given S3 bucket process.env.ELECTRON_FORGE_S3_SECRET_ACCESS_KEY - Your secret access token for your AWS account (falls back to the standard `AWSSECRET_ACCESS_KEYenvironment variable)_<br />forge.s3.accessKeyId- Your access key for your AWS account _(falls back to the standardAWS_ACCESS_KEY_IDenvironment variable)_<br />forge.s3.bucket- The name of the S3 bucket to upload to<br />forge.s3.folder- The folder path to upload to inside your bucket, defaults to your application version<br />forge.s3.public- Whether to make the S3 upload public, defaults tofalse`
Electron Release Server - electron-release-server Makes a new release for the current version and uploads the artifacts to the correct platform/arch in the given version. If the version already exists no upload will be performed. forge.electronReleaseServer.baseUrl - The base URL of your release server, no trailing slash
forge.electronReleaseServer.username - The username for the admin panel on your server
forge.electronReleaseServer.password - The password for the admin panel on your server
forge.electronReleaseServer.channel - If specified, the release channel name. Defaults to stable/alpha/beta depending on the app version
Snapcraft - snapStore Uploads generated Snaps to the Snap Store. forge.snapStore.release - If specified, a comma-separated list of channels to release to.

For example:

// github
{
  // Assume the GitHub repository is at https://github.com/username/repo
  "github_repository": {
    "owner": "username",
    "name": "repo"
  }
}

// s3
{
  "s3": {
    "accessKeyId": "<AWS_ACCESS_KEY>",
    "bucket": "my_bucket_name",
    "public": true
  }
}

// Electron Release Server
{
  "electronReleaseServer": {
    "baseUrl": "https://update.mysite.com",
    "username": "admin",
    "password": "no_one_will_guess_this"
  }
}

// Snap Store
{
  "snapStore": {
    "release": "candidate,beta"
  }
}

Custom make and publish targets

You can make your own custom targets for the make and publish targets. If you publish them as electron-forge-publisher-{name} or electron-forge-maker-{name}, they can be added to the app's devDependencies and can be specified as {name} in the make / publish targets. Publicly published third-party makers and publishers are available in the NPM registry.

The API for each target type is documented below.

API for make targets

You must export a Function that returns a Promise. Your function will be called with the following parameters.

  • appDir - The directory containing the packaged application
  • appName - The productName of the application
  • targetArch - The target architecture of the make command
  • forgeConfig - An object representing the users forgeConfig
  • packageJSON - An object representing the users package.json file

Your promise must resolve with an array of the artifacts you generated.

API for publish targets

You must export a Function that returns a Promise. Your function will be called with the following keyword parameters:

  • dir - The application directory
  • artifacts - An array of absolute paths to artifacts to publish
  • packageJSON - An object representing the user's package.json file
  • forgeConfig - An object representing the user's forgeConfig
  • authToken - The value of --auth-token
  • tag - The value of --tag
  • platform - The platform you are publishing for
  • arch - The arch you are publishing for

You should use ora to indicate your publish progress.

Debugging your application on the command line

If you're using Electron 1.7 or later, you can specify the --inspect-electron flag, which will set the Electron --inspect flag with the default debugger port.

For example:

electron-forge start --inspect-electron

Debugging your application through VS Code

Debugging your Electron main process through VS Code is ridiculously easy with Forge. Simply add this as a launch config in VSCode and you're good to go.

{
  "type": "node",
  "request": "launch",
  "name": "Electron Main",
  "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron-forge-vscode-nix",
  "windows": {
    "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron-forge-vscode-win.cmd"
  },
  // runtimeArgs will be passed directly to your Electron application
  "runtimeArgs": [
    "foo",
    "bar"
  ],
  "cwd": "${workspaceRoot}"
}

changelog

5.2.4 (2019-01-15)

Chores
  • maker:
    • force bump debian and snap dependencies to bring in fixes (91003136)
    • upgrade electron-installer-snap to ^3.0.1 for Electron 4 support (1522dc57)
Bug Fixes
  • generic: throw an error when there is no node_modules folder in the project (9e18ad9c)

5.2.3 (2018-11-17)

Chores
  • maker: upgrade electron-wix-msi to 2.x (8d16b207)
Bug Fixes
  • maker: return the correct outPath for a deb prerelease version (#589) (d194f6ea)

5.2.2 (2018-05-14)

Bug Fixes
  • packager: disable the all option (#509) (602f030f)

5.2.1 (2018-05-07)

Bug Fixes
  • publisher: remove deprecated option from @octokit/rest params (15a6879f)
  • initializer: fix setting Electron version in.compilerc when it's x.0 (#506) (e26de71c)

5.2.0 (2018-04-15)

New Features
  • publisher: Allow custom release channel for ERS (#474) (2f1888e7)
  • generic: allow specifying electron-prebuilt-compile via URL (05874ae9)
Refactors
  • generic: incorporate changes requested in PR (489a25ce)
  • packager: decouple electron version from packageJSON (1075d68a)

5.1.2 (2018-04-10)

Documentation Changes
  • publisher: fix publisher api doc in readme (f2094ca2)
Bug Fixes
  • publisher: call resolve() when electron-release-server publisher succeeds (38c29d45)
Other Changes
  • set snapcraft debug so the build doesn't time out (fe897a49)

5.1.1 (2018-02-15)

Chores
  • packager: upgrade electron-packager to 11.0.0 (dee72fd1)
  • generic: upgrade node-fetch to 2.0.0 and fetch-mock to 6.0.0 (42abee35)

5.1.0 (2018-02-05)

New Features
  • publisher: add GitHub Enterprise/HTTP proxy support to the GitHub publisher (14151022)

5.0.0 (2018-02-01)

New Features
  • publisher:
    • add snapcraft publisher (c5b7d0d7)
    • add dir to publisher args & convert args from positional to keyword (45ace6cf)
  • maker: add builtin snap support (86f987d7)

4.3.0 (2018-01-31)

New Features
Bug Fixes
  • maker: wix only works on win32 currently (707a1e33)
Other Changes
Refactors
  • maker: extract author name parsing into its own function (fa80cd3d)

4.2.1 (2018-01-29)

Chores
  • generic:
    • upgrade mocha to 5.x (01857a8e)
    • upgrade electron-installer-debian to 0.8.x (0bcedfe8)
    • replace node-github with @octokit/rest (e1f26075)
    • upgrade github to v13 (a80ff504)
    • upgrade fs-extra to v5 and inquirer to v5 (0ecc57dd)
Documentation Changes
  • generic: add support document & move debugging section there (d3f610c4)
Bug Fixes
  • installer: hdiutil output should be a string (e511206b)

4.2.0 (2018-01-08)

New Features
  • generic: allow specifying a build identifier that segregates build artifacts (0e483659)
  • rebuilder: allow configuration of electron-rebuild (b986f264)

4.1.9 (2018-01-08)

Bug Fixes
  • packager: packager hooks should be executed sequentially (e844b1d1)

4.1.8 (2018-01-08)

Chores
  • maker: upgrade electron-installer-flatpak to 0.8.0 & re-enable its tests (9c199e0d)
Documentation Changes
  • starter: add note to readme about debugging on the command line (26f347a6)
  • generic: add link to electronforge.io repository in contributing docs (c3332688)
Bug Fixes
  • generic: tabtab install breaks in bash for windows (a5f8b40f)
  • maker: fix detection of flatpak artifact (4d5378c2)

4.1.7 (2017-12-24)

Chores
  • generic:
    • don't nonzero-exit when trying to install tabtab completions (0e18fe34)
    • don't use deprecated mocha CLI flag (e13e6380)
  • tests:
    • move default test config to mocha.opts file (f681176c)
    • remove intermediate layer when running via Docker (6282a115)
    • cache node_modules in CI (fcef3826)
Documentation Changes
  • packager:
    • clarify why dir/platform can't be set in Packager config (f2b5c4a3)
    • clarify why arch can't be set in Packager config (df5a018e)
Bug Fixes
  • packager: package spinner isn't defined when asar.unpack is checked (435e83d0)
  • initializer: electron versions for babel-preset-env should be strings (35120b1c)
Other Changes
Refactors
  • generic: Use readJson and writeJson (1a1884d1)

4.1.6 (2017-12-06)

Bug Fixes
  • importer:
    • Fix typo in dependency check (24267fe4)
    • handle the case where productName doesn't exist (23f191a8)
  • generic: assume invalid semver package manager versions are incompatible (076c78e1)
Refactors
  • maker: DRY up linux config transformations (a39011b8)

4.1.5 (2017-11-24)

Bug Fixes
  • packager: fix custom afterCopy, afterPrune not being included (c9e23e38)

4.1.4 (2017-11-21)

New Features
  • packager: add support for hook files for electronPackagerConfig.afterPrune (e847a78e)
Bug Fixes
  • publisher: fix publishing a saved dry run on a different device from the initial dry run (a2c33eb8)
  • packager: move the rebuild hook to after pruning finishes (cce9db42)
  • importer: adjust Forge config defaults just like in init (38f9a3d4)
Refactors
  • packager: resolve hook files in a common function (08d55772)

4.1.3 (2017-11-10)

Chores
  • generic: replace the deprecated babel-preset-es2015 with babel-preset-env (b3499edf)
Bug Fixes
  • make: allow building for MAS inside make logic (5e6411ec)
  • packager: warn if the app version is not set (29070ca6)
  • importer: warn if the package.json being imported does not have a version (e55ea98d)
  • starter: throw an error if the app version is not set in package.json (69b29958)
Tests

4.1.2 (2017-09-27)

Bug Fixes
  • generic: correct the getOwnPropertyDescriptor proxy hook to respect current properties writabil (8e9872bc)

4.1.1 (2017-09-27)

Bug Fixes
  • generic: ensure config proxy doesn't prevent access to built-ins (07047889)

4.1.0 (2017-09-26)

Chores
  • generic:
    • upgrade electron-windows-store to 0.12 (fcdc0a02)
    • upgrade cz-customizable, and github (9156296b)
Documentation Changes
  • maker: mention that make can support non-host platforms (6c302198)
New Features
  • initializer: add electron-squirrel-startup to the default template (e0e42aa2)
Bug Fixes
  • generic:
    • automatically warn w/a nightly package manager version (d997ba0c)
    • blacklist NPM 5.4.[01] on Windows (063caca4)
  • init: run package manager commands via cross-spawn (cbee55e2)
  • publisher: allow config for Electron Release Server to be read from envars (50d35374)
  • tests: use a newer version of native-metrics (1e7c175e)
Refactors
  • generic:
    • use cross-spawn-promise instead of spawn-rx (5a9848c7)
    • replace electron-host-arch with hostArch in Electron Packager (45afdfb5)
  • maker:
    • use makeCert from electron-windows-store (c31ceef6)
    • use the target platform/arch API from Packager to determine "all" archs (f9c4c20c)

4.0.2 (2017-09-10)

Bug Fixes
  • generic: whitelist yarn >= 1.0.0 (36bc34ad)
  • linter: don't pass --color to linters that don't support it (66354fb6)
  • tests:

4.0.1 (2017-9-5)

Bug Fixes
  • generic: tabtab install script fails on non-*nix systems (fc3c0301)

4.0.0 (2017-08-30)

Chores
  • publisher: use SHA256 instead of md5 (c69db80f)
  • generic: upgrade Electron Packager to 9.x (6275d2bf)
Documentation Changes
  • publisher:
    • improve docs for publish function (7766a27c)
    • mention that multiple targets are allowed (3ec0cfa6)
    • fix S3 config key typo (4225683b)
  • maker: document the return result of make (5399f500)
New Features
  • publisher: adds dryRun and resumeDryRun to the API to allow post-make publishes (288edbc1)
  • initializer:
    • only copy CI files if specified (fd6f2f9b)
    • add Travis/AppVeyor CI files to default template (296bdde8)
Bug Fixes
  • generic:
    • clean up package manager warning output (894ed0a9)
    • add yarn 0.27.5 to the whitelist, but only for darwin/linux (88b92fce)
    • fix installing tab completion when installing Forge locally (7ea49812)
Refactors
  • publisher:
    • make dryRun object storage make more sense (f8d807ed)
    • rename target option to publishTargets in API (4b68880d)
  • initializer: make init options camelcase (f4459822)
Tests
  • maker: Fix make test for new return type (d6393567)
  • publisher: fix dry run specs (d2085812)

3.2.0 (2017-08-17)

Chores
  • generic:
    • use the xcode8.3 image for Travis OSX (c24ae48c)
    • upgrade dependencies (9d17ca9e)
  • tests: fixup comma arch test (565fce42)
Documentation Changes
  • generic: mention alternate ways of creating new Electron apps with Forge (419962a8)
  • packager: list the Packager options that are not configurable (bb33d9b6)
New Features
  • initializer: add Forge as a devDependency to new Electron projects (6d2cf4b0)
  • generic: print a warning if the package manager used is not a known good version (a4c36fa4)
Bug Fixes
  • maker: allow comma seperated arches in make as well as package (9c69b08b)

3.0.5 (2017-6-17)

Bug Fixes
  • maker: fix debian and redhat maker path calculation (c2dca211)

3.0.4 (2017-6-15)

Chores
  • tests: remove unnecessary chai-fetch-mock dependency (196a64db)
Bug Fixes
  • maker: handle name option for the deb, rpm makers as well as dmg (d335741a)
  • generic: add executable permissions to vscode.cmd (33532f79)
Refactors
  • installer: replace electron-sudo with sudo-prompt (0ea55fab)

3.0.3 (2017-5-26)

Bug Fixes
  • initializer: fix bad logic RE argument parsing from the top level forge command (774b8769)

3.0.2 (2017-5-25)

Bug Fixes
  • starter: fix double dash arg pass through (0379e5fc)
  • maker: fix renaming of DMG output when a custom name is provided (14cc927a)
  • tests: fix appx tests (maker did not return output path) (8d895cfc)
  • initializer: fix linting install for airbnb style (b3446184)
Refactors
  • generic: replace fs-promise with fs-extra (012b152f)
Tests
  • maker: add tests for the DMG maker to ensure the renaming logic is correct (8f5f9691)

3.0.1 (2017-5-3)

Bug Fixes
  • publisher: fix ers publisher not publishing when version already exists (1c643ef9)
  • maker: fix dmg output path and add test to enforce in future (a41d6db3)

3.0.0 (2017-5-1)

Chores
  • undefined: fix devDependency peer dep versions (c5c8e9a9)
  • generic: add breaking changes prompt to npm run commit (566fd6fb)
Documentation Changes
  • publisher: add docs for the new ers publisher (e70405a8)
New Features
  • publisher: add new publisher for electron-release-server (0c68ebab)
  • makers: Ensure all assets outputted by make are versioned (6dda5179)
  • maker:
    • create and consume a common util to check makers' supported platforms (fa53340b)
    • declare deb maker support for darwin & linux platforms (f10fbd18)
Bug Fixes
  • start: exit forge with same status code as Electron if nonzero (a509f55a)
  • tests: make optionFetcher-related tests compile again (1097f8bd)
  • docs: rm note that package api's platform opt is ignored (eefa93f0)
Refactors
  • starter: use double dash instead of triple dash to pass args through (e3a1be64)
  • utils: filter packages' os declarations to exclude blacklist entries (fbaec97f)
  • maker: support make for targets on non-host platforms (f79f6f78)
  • util: extend requireSearch to export a raw search fn (84f0134b)
Tests
  • publisher: fix publisher tests for new syntax (c19d1c2a)
  • maker: add test to confirm dummy maker does not get called (556deaac)

2.12.0 (2017-4-25)

New Features
  • maker: basic hooks for preMake, postMake, generateAssets, prePackage and postPackage (1a17189b)
Bug Fixes
  • maker: do not enforce the name property on the DMG maker (1b10fd57)

2.11.1 (2017-4-19)

2.11.0 (2017-4-19)

New Features
  • maker: allow maker configs to be functions that return values based on arch (d9cbec5a)

2.10.0 (2017-4-16)

Chores
  • generic:
    • fix/rename coverage sending script (547c044f)
    • update various dependencies (0f97292c)
New Features
  • starter:
    • windows implementation of the vscode debug command (9cb7f42c)
    • provide an executable to start forge in a vscode debugger compatible way (1238dee5)

2.9.0 (2017-4-2)

Chores
New Features
  • importer: add configurable outDir support for gitignore (9369284f)
Bug Fixes
  • initializer:
    • update Electron version type in .compilerc template, for completeness (a4fa4bfc)
    • set electron version to be float in init step (710129b7)
  • maker:
    • upgrade rpm maker for better package.json handling (926032e8)
    • test outDir on zip target only, after other targets run (a2c92499)
    • pass computed outDir to packager (686200f6)
    • search local node_modules folder for maker when installed globally (9b8f2970)
  • tests:
    • stop awaiting mocha and ensure we clean up out dirs (2e6dc384)
    • use expect(await ...) syntax per @marshallofsound (59ddf9af)
  • generic: use path.resolve (vs /-delimited) to compute default outDir (ff167447)
  • packager: correct main file reference in thrown error from packageJson.name to .main (a68284b1)
  • publisher: check local node_modules when searching for publisher (42fad7f3)
Refactors
  • maker: compute outDir from providedOptions w/default (d69e7626)
  • packager: compute outDir from providedOptions w/default (1e26d258)
Code Style Changes
Tests
  • tests: add tests for packager & maker outDir support (32cecffd)

2.8.3 (2017-3-10)

Chores
  • generic:
    • update react-typescript template (30516e78)
    • make release script work on windows (0ff6a7ab)
New Features
  • starter: automatically wipe the ELECTRON_RUN_AS_NODE variable unless specified (c702fe4a)
  • generic:
    • Support setting the Electron app path in start() (47c5572e)
    • allow third party modules to be named whatever they want (fddb40e6)
Bug Fixes
  • publisher: use updated node-github response API (0f8e6c4f)
  • maker:
    • fix the squirrel maker app name logic (84031ecb)
    • allow most appx default config to be overridden by the user (b1e90538)
  • tests: ensure test project has proper metadata filled (0bc81858)

2.8.2 (2017-2-28)

Chores
  • templates: bump all template versions (32297344)
Bug Fixes
  • ci: Use the preinstalled yarn on AppVeyor (#146) (7a1deee7)
  • publisher: Fix secret access key (0a9710b5)

2.8.1 (2017-2-23)

Chores
  • generic:
    • add checkboxes and intros to the issue/PR templates (a1ab1c3a)
    • fix formatting in GitHub issue template (da95b42b)
  • tests: remove now obsolete flatpak call in Linux tests (b93b6cfe)
Documentation Changes
  • publisher:
    • mention the standard AWS environment variables in the README (efc7ea14)
    • add example for GitHub publish target (3fc0a9c2)
New Features
  • packager: remove the users forge config after packaging for safety reasons (7432e034)
  • publisher:
    • allow usage of standard AWS environment variables for S3 publishing (d31ce248)
    • add S3 publish target (fa31902a)
    • allow platform level config for publish targets (8572cad6)
  • generic: allow config options to be automagically pulled in from process.env (250c197f)
Bug Fixes
  • tests:
    • fix forge config deletion tests on all platforms (7b99e847)
    • fix test failures caused by config structure changes (3a3cdfdb)
  • importer:
    • install electron-prebuilt-compile as devDep (e80be32a)
    • check updateScripts value at script install vs deps removal (4942cb60)
    • ensure electronName exists before resolving its path (9dcf2ec5)
  • publisher: throw an exception if a GitHub token isn't specified (bc299b7a)
  • initializer: add github_repository.name to package.json in default template (d1ceadf3)
Refactors
  • publisher: add deprecate method call to inform the user (24571197)
Code Style Changes
  • util: fix typo re: imagePath (9e064cf3)

2.8.0 (2017-2-2)

Chores
  • gitignore: ignore npm-debug.log files (06b824ee)
New Features
  • importer: allow the implementer to decide whether to override scripts or not (f85e194f)
  • starter: resolve start api usage with a handle to the spawned process (b5ba30e3)
Bug Fixes
  • importer: if no electron was found install the latest version by default (c8b12fbf)
  • generic: make all process.exit and console calls respect the interactive setting (a3e43315)
Refactors
  • generic: add wrappers for console.info and console.warn (f223df85)
Tests
  • starter: add test for returned childProcess.spawn (f2c128e4)

2.7.5 (2017-1-29)

Chores
  • tests: add eslint-plugin-mocha (74397232)
  • generic: update electron-installer-dmg to version 0.2.0 (aa8034b1)
Bug Fixes
  • tests: update tests due to changes in #101 (912b4f69)
  • maker: detect out path of package step correctly (6d15c62d)
  • tabtab: dont install tabtab in a development environment and ignore tabtab install errors (f0cb0417)
Code Style Changes
  • generic: fixed typos (2f869d81)
  • tests: ignore intentionally wrong code in test (f01f9907)
Tests
  • initializer: add nonexistent template test (6f26c64f)
  • generic: increase test coverage of the init API (2c9caddf)
  • starter: add test coverage for starter (0d2f5712)
  • installer: add test coverage for the installer (4049e31c)
  • tests: increase test coverage on util modules (6c63aafa)

2.7.4 (2017-1-27)

Documentation Changes
  • generic: clarify what the major package dependencies are (559956b3)
Refactors
  • generic: move ora.ora to an ora helper for ease of submodule use (ee33638a)

2.7.3 (2017-1-25)

New Features
  • installer: manually mount and scan a DMG file when installing for the .app (7ea5af8a)
Bug Fixes
  • packager: fix resolving of afterCopy and afterExtract hook paths (bd4df685)
  • installer: fix install prompt when multiple compatable targets found (9a2f36c9)
Code Style Changes
  • generic: remove unnecessary eslint pragmas (23d1aa9f)

2.7.2 (2017-1-18)

Bug Fixes
  • packager: force upgrade to electron-rebuild 1.5.7 (f2912db5)

2.7.1 (2017-1-15)

Chores
  • generic:
    • alphabetize custom eslint rules (e7f6eeb6)
    • disable the no-throw-literal eslint rule (05f893e8)
Bug Fixes
  • initializer: handle local templates correctly (42bf745a)
  • alias: fix the forge alias so that it can run the make command (725e6b06)

2.7.0 (2017-1-14)

Documentation Changes
  • initializer: document the built in templates (b0eec7c3)
New Features
  • initializer: add userland templates to forge (bcba06a2)

2.6.0 (2017-1-10)

Chores
  • deps: Update electron-windows-store (761464f0)
New Features
  • importer:
    • ensure the user is aware of any script changes we make (cbb73e7e)
    • import now sets the scripts section in package.json to be forge scripts (cb01d406)
  • initializer: template package.json now includes package and make scripts (272d9b1e)
  • rebuilder: show rebuild progress from the electron-rebuild lifecycle (26f23b48)
  • generic:
    • use electron-rebuild instead of generic rebuild logic (3d26da5b)
    • add basic tab completion for top level commands (30082bbf)
Bug Fixes
  • packager:
    • check asar.unpack correctly (150ea5dd)
    • clarify entry point error messages (969ab1ea)
    • throw errors on an uncompilable entrypoint (b7f7b81c)
  • initializer:
    • unpin electron-compilers (9e2aefaa)
    • unpin eslint-plugin-jsx-a11y (02b6e367)
    • pin electron-compilers dependency due to typescript bug (4ebafa8d)
Refactors
  • packager: upgrade to Electron Packager 8.5.0 (b8489b47)

2.5.2 (2017-1-7)

Bug Fixes
  • publisher: dont call make twice while publishing (55bfe1ac)

2.5.1 (2017-1-5)

Chores
  • undefined:
    • istanbul-lib-instrument is no longer required (f60dd586)
    • upgrade to version of babel-plugin-istanbul that should address regression (0913506b)
Bug Fixes
  • importer: fix relative path to tmpl directory (b39c1008)
  • undefined: regression in istanbul-lib-instrument and babel-plugin-istanbul should now be addressed (58b9791e)

2.5.0 (2017-1-3)

Chores
  • generic:
  • tests:
    • fix appx tests on rebased branch (75f217a5)
    • move tests to be unit tests on the API and enable coverage (54603c1e)
Documentation Changes
  • generic:
    • fix option variable names (0923ac1e)
    • cleanup API docs (9c118a4f)
    • add doc formatting guidelines based off of pycodestyle (6efa5259)
  • importer:
New Features
  • generic:
    • expose some util methods through JS API (a506dd33)
    • expose top level methods as JS APIs (93fb48f5)
  • publisher: add draft and prerelease options for publishing to github (898de235)
Bug Fixes
  • generic: lock istanbul dependency versions to prevent bug (205104c4)
Refactors
  • generic: refactor confirm prompts into a helper for interactive mode (b495012e)
Tests
  • generic: add tests for lots of the utils (d0962b93)

2.4.0 (2017-1-3)

New Features
  • maker: add support for Windows Store (AppX) packages (74a12163)
  • starter: switch the default Babel preset to use babel-preset-env (4e3bb17b)
Bug Fixes
  • starter: ensure linebreak-style is disabled (ac7a20bc)

2.3.0 (2017-1-1)

Chores
  • installer: use the ora helper in the install command (9358eb42)
  • generic:
    • add installer to cz config (3b253b11)
    • only send slack notifications on build change (838d70e7)
  • tests: make sure ora knows that the Docker container is for CI (41d25ea7)
New Features
  • installer:
    • add rpm installer (f8f9baa5)
    • don't suffix temp install files with .forge-install (1c2bfd81)
    • add deb installer (fb217c74)
    • add DMG support for macOS installer (3465d261)
    • add inital app installer for macOS platform (da3150d9)
  • generic:
    • use an ora/promise helper instead of a global uncaughtRejection handler (#50) (1b6b7276)
    • travis build notifications (d25f1461)
Bug Fixes
  • installer:
    • fix installer debug key (24454950)
    • dont fetch prerelease versions unless instructed (1b88b153)
    • await promises through the linux install chain (a0b5ac70)
    • remove flatpak check (0b044134)
    • wildcard the extension matchers (1489e641)
Refactors
  • installer:
    • use single regexp to make repo path safe (1255803b)
    • finish replacing sudo-prompt with electron-sudo (d8587930)
    • replace sudo-prompt with git branch of electron-sudo for Linux installers (9834cb1b)
    • check that the linux installer program exists first (fb56c542)
    • update the ora text wh have resolved a repo but not found a release (5cbf8cb8)

2.2.0 (2016-12-30)

New Features
  • initializer: allow custom initialzers (9e6ddfa0)
Tests
  • initializer: add test for custom initializer (0dc62307)

2.1.0 (2016-12-30)

Chores
  • generic: add importer to the git-cz list (fbf691cb)
  • tests: remove .only from util_spec (3b01f08c)
New Features
  • importer:
    • confirm build tool package removal from user (3b548557)
    • delete existing Electron build tools from package.json (4152bd2d)
    • move babel config in existing project to .compilerc (b09fc3d6)
    • fix the projects gitignore on import (75366bfe)
    • create inital import logic (bddb9038)
  • maker: allow user to override make targets (bac86800)
  • generic: allow config options to use string templating (5a568cb8)
Bug Fixes
  • importer:
    • pretty print the compilerc file (07f06b40)
    • update the logging as per PR feedback (dac33f0d)
  • rebuild: skip dependencies without a package.json file (3348223d)
  • packager: remove stray .bin files leftover by yarn installs during packaging (50ad8e6d)
Refactors

2.0.0 (2016-12-30)

Chores
  • generic: add publisher to cz config (8653b62b)
Documentation Changes
  • publisher: document the API for custom makers and publishers (81ed28d7)
New Features
  • publisher: initial work on a publish command to sent make artifacts to github (189cb0cc)
  • generic: map the alias bin commands to the correct commander files (f1cac740)
Bug Fixes
  • publisher:
    • publish to the correct version (02fe5699)
    • throw custom 404 if we cant find the release (6f4e1ed4)
  • maker: fix RPM maker outPath variable (4b32fe42)
Refactors
  • publisher: move github publish logic to own file (bdaff3ce)
Tests
  • generic: add tests for the require-search util (b7930eaa)

1.1.0 (2016-12-27)

Chores
  • tests: run flatpak runtime install in local Dockerfile (d046965f)
  • generic: add pretest step to improve development (558fae31)
  • packages: upgrade fs-promise and inquirer (#18) (d51d482f)
Documentation Changes
  • generic: document the new JS file option for config (2d44c41f)
New Features
  • rebuilder: only rebuild prod and optional deps (ignore dev deps) (d751a85f)
  • generic: allow JS files to provide the config object (e57f3c78)
Bug Fixes
  • packager: allow hooks to be strings or functions depending on config setup (ec0caecc)
  • rebuilder: rebuild modules inside @ scoped folders as well (#19) (bc21528d)
  • generic: document that the minimum Node version is 6 (1f5ac7f2)
Refactors
  • generic:
    • standardize reading package.json files (#33) (0855eacf)
    • replace mkdirp/rimraf calls with equivalent fs-promise calls (bb2c6cf3)
  • tests: use different native modules so the tests run on CI (d20387b7)
Tests
  • generic: only skip help spec on Windows (#34) (202987e1)
  • builder: add tests to ensure correct behvior of the native module builder (b79c7af5)

1.0.1 (2016-12-12)

Chores
  • tests: add AppVeyor support (#15) (fe63ac0b)
Bug Fixes
  • starter: fix launching on newest yarn (8c5bc656)

1.0.0 (2016-12-11)

Chores
  • generic:
    • rename all instances of marshallofsound to electron-userland (9981fcbb)
    • fix changelog link parsing (07defb76)
  • packager: remove commented code (35745594)
  • maker: add mas default targets (775459cd)
New Features
  • maker:
    • enable MAS makes on darwin platform (d8ac9ad8)
    • allow make to target different or multiple arches (3d4ee593)
Bug Fixes
  • maker: build armv7l distributables when arch=all (f6d28c32)
  • packager:
    • change arch name when armv7l is packaged during arch=all (132b3670)
    • fix the third arch ora on linux (894fd4e7)
    • fix ora sequencing when running with --arch=all (e4dfdede)
Refactors
  • generic: replace process.arch with a function that handles arm arches better (81fa0943)

0.1.0 (2016-12-11)

Chores
  • tests:
    • install g++ since Docker Hub won't create a new image (f219e994)
    • disable building branches on Travis CI (12e5d99e)
  • initializer: output logs of the install step on failure (20c0b12a)
  • generic:
    • make the changelog link to the relevent commits (ee6a7d86)
    • set up changelog generation (9a3854f1)
Documentation Changes
  • generic:
    • add contributing/issue/pull request docs + news (d25d701d)
    • clean up README (eddd61d8)
  • packager: fix syntax of hook docs (84a1a063)
New Features
  • packager: rebuild native modules automatically in all the right places (1d1ff74d)
Bug Fixes
  • packager:
    • output rebuild errors if there are any (f8ffca13)
    • rebuild pre-gyp modules with their binary variables (ed9137dd)
Refactors
  • packager: make the rebuild a promise and use an ora (bc1ec28d)

0.0.9 (2016-12-11)

Documentation Changes
  • packager: document the require mapping of the hooks (87fb6aa6)
New Features
  • packager: map afterExtract hooks to require calls (623a0001)

0.0.8 (2016-12-11)

New Features
  • maker: add the flatpak maker for the linux target (218518ef)
Refactors
  • packager:
    • move packager compile logic to a electron-packager afterCopy hook (c10bcd29)
    • upgrade to Electron Packager 8.4.0 (with quiet option) (9ab19b5f)

0.0.7 (2016-12-11)

Documentation Changes
Bug Fixes
  • starter: pass through env to started application (834729fb)
  • maker: spawn the zip command in the containing directory (e909a0c4)
  • initializer: add electron-compile to the prod dependencies of the initialized app (5a56efb9)

0.0.6 (2016-12-11)

Chores
  • tests:
    • run different package installers in different Travis workers (028bcfbf)
    • run Travis with OSX and Linux workers (9d1b0291)
Documentation Changes
New Features
  • maker:
    • add the rpm maker for the linux target (85821f27)
    • add the deb maker for the linux target (5c5ce67a)
    • add the dmg maker for the darwin target (aaceb3f2)
  • build: add git-cz for semantic versioned commits (cdbc78b6)
Bug Fixes
  • maker:
    • add a santizied app id to the electronWinstaller config on init (20ae889e)
    • move electron-installer-debian to optional deps so that installs work on windows (661b1eb6)
    • correct path/arch of generated deb file (63ff52b2)
  • generic: fix package.json warning about repository (f21a87aa)
  • packager: throw error when electron-prebuilt-compile is not found (23449956)
Refactors
  • maker:
    • DRY up app name (f5ae494f)
    • add packageJSON to the function arguments (e8e1054a)
    • create ensure{Directory,File} to rimraf+mkdirp the given output (b3b616a0)
  • generic:
    • add debug calls to the linter (3e116109)
    • add the 'debug' module for standard debug logging (9f4c0b49)
  • packager:
    • remove stray log (f4f36b59)
    • move the electron-packager dependency to forge instead of the users module (2e695c21)
Code Style Changes
  • generic:
    • disable some eslint rules that don't make sense in a CLI tool (f1f06acf)
    • change eslint rules to allow strange linebreaks (4b7a22e3)
Tests
  • resolve-dir: add a fixture that is actually an electron-forge package.json file (e0e712dd)

0.0.5 (2016-12-11)

0.0.4 (2016-12-11)

0.0.3 (2016-12-11)

0.0.2 (2016-12-11)

0.0.1 (2016-12-11)