Felix Rieseberg

Ember-Electron 2: Building Desktop Apps with Ember and Electron

Building desktop apps with Electron is powerful: It enables developers to use web technologies to target all major operating systems. However, writing the app itself is only half the battle - one also has to compile binaries and create installers, packages, and bundles for the variety of distribution methods. To assist developers with that, the Electron community is currently converging on a single developer tool: electron-forge.

Today, I'm releasing a full rewrite of ember-electron, integrating forge with the Ember Cli. Ember-Electron still handles build-test-release cycle for Ember developers, but it does using the same tools as React, Angular, and Non-Framework developers. This allows us, as a community, to worker closer together, regardless what our favorite framework and command line tool is. In doing so, ember-electron even gained some features that I previously considered out of scope.

Live-Reload and Testing

Running ember electron checks your app's dependencies for native code, recompiles if necessary, and starts the application in Electron. Whenever you update renderer code, the app will live-reload. Likewise, ember electron:test runs unit tests in Electron - if run with a --server parameter, it even does so with live-reload enabled.

Binaries and Installers

Previously, ember-electron required users to worry about native dependencies. The creation of installers was also only partially supported. Version 2 brings tons of changes: ember electron:package creates fitting binaries for Windows, macOS, and Linux.

ember electron:make is brand new ✨ and creates installers and distribution bundles. For Windows, that means a Squirrel Installer and a Windows Store Package; for macOS, zip/dmg files and a Mac App Store Package, while Linux users enjoy the creation of deb, rpm, and flatpak files.

Hug These People

The rewrite and subsequent release of ember-electron 2 was mostly done by its new contributors, Aidan Nulman (@anulman), Florian Pichler (@pichfl), and Ben Demboski (@bendemboski). Huge thanks to them and everyone else who contributed!