Amalgamate the electron build packaging into one script.
Use update_base_url so we can compute the actual URL in the
script for windows (because we need to put it in the build) and
at runtime for mac os.
* Remove squirrel hooks (the installing & uninstalling is now
done by the, er, installer)
* Switch to electron-auto-update
* Shorten initial update delay because we no longer need to wait
for squirrel to release a lock file
* Change update URLs because windows is now one installer for
both 32 & 64 bit.
* Update electron-builder to 10 where NSIS is now the default
target for Windows.
* Add linux to the target list, building a deb.
* Remove sqirrel-specific installation spinner
* Remove redundant !**/* from files
* Implement the squirrel install / uninstall hooks (so we have
a start menu entry / desktop shortcut)
* Wait longer before checking for update
* Set the window icon
* Add a 'file' menu
* Bump electron-builder
* Add the icon url for the control panel entry
Advantages:
* blocks while a rebuild is in progress so you're less likely to reload the
old version
* serves from memory rather than disk, so we no longer need to turn off the
cachebuster to avoid filling the disk with bundles. Empirically, seems to
last a plausible amount of time without OOMing; there's no real reason to
believe it would use any more memory than webpack itself.
* That in turn means we no longer need the hack to stop chrome caching old
sourcemaps (because the sourcemap now has a cachebuster in its name).
* one fewer process for parallelshell to (fail to) manage.
* in future, we could consider the fancy hot-reload functionality.
We ended up including all sorts of stuff in our published packages. Let's take
the opposite approach and include useful stuff rather than exclude unuseful
stuff.
This means that clients can do better caching of assets, as it will mean we are
no longer reliant on etags to ensure that clients get a fresh version.
We inhibit the cachebuster for `npm start`, so that we don't get millions of
copies of the bundles on dev boxes.
Also sort out regenerator runtime as it turns out importing
babel-polyfill in your code is insufficient if using webpack
because it's imported too late, so use both that and
regenerator-runtime. Sigh.
Also sort out regenerator runtime as it turns out importing
babel-polyfill in your code is insufficient if using webpack
because it's imported too late, so use both that and
regenerator-runtime. Sigh.