Electron Forge
  • Getting Started
  • Importing an Existing Project
  • CLI
  • Core Concepts
    • Why Electron Forge?
    • Build Lifecycle
  • Configuration
    • Configuration Overview
    • TypeScript Setup
    • Plugins
      • Webpack Plugin
      • Vite Plugin
      • Electronegativity Plugin
      • Auto Unpack Native Modules Plugin
      • Local Electron Plugin
      • Fuses Plugin
    • Makers
      • AppX
      • deb
      • DMG
      • Flatpak
      • pkg
      • RPM
      • Snapcraft
      • Squirrel.Windows
      • WiX MSI
      • ZIP
    • Publishers
      • Bitbucket
      • Electron Release Server
      • GitHub
      • Google Cloud Storage
      • Nucleus
      • S3
      • Snapcraft
    • Hooks
  • Built-in Templates
    • Webpack
    • Webpack + Typescript
    • Vite
    • Vite + TypeScript
  • Guides
    • Code Signing
      • Signing a Windows app
      • Signing a macOS app
    • Custom App Icons
    • Framework Integration
      • React
      • React with TypeScript
      • Vue 3
    • Developing with WSL
  • Advanced
    • Auto Update
    • Debugging
    • Extending Electron Forge
      • Writing Plugins
      • Writing Templates
      • Writing Makers
      • Writing Publishers
    • API Docs
Powered by GitBook
On this page
  • Prerequisites
  • Creating a new app
  • Using templates
  • Starting your app
  • Building distributables
  • Publishing your app
  • Advanced Usage

Was this helpful?

Edit on GitHub

Getting Started

Quickly scaffold an Electron project with a full build pipeline

NextImporting an Existing Project

Last updated 3 months ago

Was this helpful?

Electron Forge is an all-in-one tool for packaging and distributing Electron applications. It combines many single-purpose packages to create a full build pipeline that works out of the box, complete with code signing, installers, and artifact publishing. For advanced workflows, custom build logic can be added in the Forge lifecycle through its . Custom build and storage targets can be handled by creating your own and .

Prerequisites

  • ≥ v16.4.0

  • A JavaScript package manager:

    • (as of Forge v7.7.0)

Packaging requires node_modules to be on disk

When packaging your Electron app, Forge crawls your project's node_modules folder to collect dependencies to bundle. Its module resolution algorithm is naive and doesn't take into account symlinked dependencies nor Yarn's Plug'n'Play (PnP) format.

  • If you are using Yarn >=2, please use the nodeLinker: node-modules install mode.

  • If you are using pnpm, please set node-linker=hoisted in your project's .npmrc configuration.

Creating a new app

To get started with Electron Forge, we first need to initialize a new project with create-electron-app. This script is a convenient wrapper around Forge's command.

npx create-electron-app@latest my-app

Using templates

Forge's initialization scripts can add additional template code with the --template=[template-name] flag.

npx create-electron-app@latest my-app --template=webpack

There are currently four first-party templates:

  • webpack

  • webpack-typescript

  • vite

  • vite-typescript

All of these templates are built around plugins that bundle your JavaScript code for production and includes a dev server to provide a better developer experience.

We highly recommend using these templates when initializing your app to take advantage of modern front-end JavaScript tooling.

Starting your app

You should now have a directory called my-app with all the files you need for a basic Electron app.

cd my-app
npm start

Building distributables

npm run make

Publishing your app

Now you have distributables that you can share with your users. If you run the publish script, Electron Forge will then publish the platform-specific distributables for you, using the publishing method of your choice. For example, if you want to publish your assets to GitHub, you can install the GitHub publisher dependency using:

npm install --save-dev @electron-forge/publisher-github
npm run publish

Advanced Usage

You can also check out the documentation on some of our more advanced features like:

To learn more about authoring your own templates for Electron Forge, check out the guide!

So you've got an amazing application there, and you want to package it all up and share it with the world. If you run the make script, Electron Forge will generate you platform specific distributables for you to share with everyone. For more information on what kind of distributables you can make, check out the documentation.

Once you have , run the following command to upload your distributables:

For more information on what publishers we currently support, check out the documentation.

Once you've got a basic app starting, building and publishing, it's time to add your custom configuration, which can be done in the forge.config.js file. Configuration options are specified in the .

Writing Templates
Makers
configured the publisher according to the documentation
Publishers
Configuration Docs
Adding plugins
Debugging your app
Writing your own makers, publishers and plugins
Plugin API
Makers
Publishers
Node.js
Git
npm
Yarn Classic
pnpm
Init