4b32fe42b6 | ||
---|---|---|
ci | ||
src | ||
test | ||
tmpl | ||
.appveyor.yml | ||
.cz.js | ||
.eslintignore | ||
.eslintrc | ||
.gitignore | ||
.npmignore | ||
.travis.yml | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md | ||
gulpfile.babel.js | ||
issue_template.md | ||
package.json | ||
pull_request_template.md |
README.md
Electron Forge
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.
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
electron-forge start
Project Goals
- Starting with Electron should be as simple as a single command.
- Developers shouldn't have to worry about
babel
,browserify
,webpack
, etc. Everything should "just work" for them out of the box. - 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
electron-compile
: a tool
that lets you use modern and futuristic languages inside Electron without
worrying about transpiling or build tooling.
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 NPM
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.
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. Note that you can only generate distributables for your current platform.
Linting your Project
electron-forge lint
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"] // An array of linux make targets
},
"electronPackagerConfig": {},
"electronWinstallerConfig": {},
"electronInstallerDMG": {},
"electronInstallerFlatpak": {},
"electronInstallerDebian": {},
"electronInstallerRedhat": {}
}
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 | |
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 |
Configuring package
You can set electronPackagerConfig
with any of the options from
Electron Packager.
NOTE: You can also set your forge
config property of your package.json to point to a JS file the 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.