Easily package your Meteor apps with Electron.
cd /your/meteor/appmeteor npm install --save-dev universe-desktop-app
Now, You should add to your package.json on the end of section
scripts following line:
So, everything should look like this example:
For invoking Electron methods from Meteor, you'll also need to install the
universe:desktop-appmeteor package. For more info check Meteor x Electron integration.
Works on all Meteor's supported platforms.
$ meteor npm run desktop -- --helpUsage: desktop-app [command] [options]Commands:run (default) start meteor app within desktop contextbundle bundle meteor app at `.desktop` dirpackage bundle and package app to `--output` dirOptions:-h, --help output usage information-V, --version output the version number-i, --input <path> meteor app dir | default = .-o, --output <path> output dir | default = .desktop/.dist-s, --settings <path> meteor settings file | default = null (optional)Examples:# cd into meteor dir firstcd /your/meteor/appdesktop-appdesktop-app rundesktop-app packagedesktop-app package -o /dist/dirdesktop-app package -o /dist/dir -s file.jsondesktop-app package -i /app/dir -o /dist/dir -s dev.jsondesktop-app package -- <electron-packager-options># more info about electron packager options:# ~>
cd /your/meteor/appmeteor npm run desktop
cd /your/meteor/appdesktop-app package
The packaging process is done under the hood using
npm package. The following variables are automatically set:
--out-- comes from cli option [-o, --out]
--arch-- comes from system [current arch]
--platform-- comes from system [current platform]
--version-- comes from .desktop/package.json [current app version]
You can overwrite these default values and also set others by passing custom
arguments directly to
cd /your/meteor/appdesktop-app package -- --icon=/folder/x/img/icon.png --version=x.y.z
All the available options for
electron-packager can be found here:
The output app will match your current operational system and arch type.
Due to NodeJS native bindings of such libraries such as Fibers -- which are mandatory for Meteor, you'll need to have your Meteor app fully working on the desired platform before installing this plugin and packaging your app.
So, at this time, you cannot package your app in a cross-platform fashion from one single OS.
Perhaps you can live with it? :)
DO NOT use options to output for multiple arch/platforms at once, such as
--arch=all. It won't work, Desktop can bundle Meteor apps only for the platform you're running on.
-i, --input- Meteor app folder, default is current directory (
-o, --output- Sets output folder for your packaged app, default is
-s, --settingsSets path for Meteor settings file, this will be available inside your Meteor code both in development and after being packaged.
You'll notice a new folder called
.desktop in your meteor app dir, its
structure will be like this:
/your/meteor/app├── .desktop│ ├── .gitignore│ ├── desktop.json│ ├── index.js│ └── package.json├── .meteor└── ...
This is a pure Electron project, so you can use the whole Electron API from JS
files in this folder. Also, you can install electron dependencies and store them
package.json file. Note that the
desktop package is itself a
See this folder as the
desktop layer for your Meteor app. Remember to check
index.js file, it constains the desktop start/stop usage.
desktop.json file will hold specific preferences for Desktop, such as
plugins and so on. It's still a WIP, but you can get around it.
For now there's only one option here:
Set it to true to preserve database between installs. It works by saving the mongo data dir inside user's data folder, instead of being self contained within the app folder (which gets deleted when new version is installed).
Let's see how one would be able to do a simple SplashScreen:
var app = ;var browser = ;var desktop = __dirname;var window = null;var splash = null; // splash variableapp;// ....
You can seamlessly call Electron methods from your Meteor's client/server code.
Define your Electron methods inside the
// `.desktop/index.js` filedesktop;
Then, in your Meteor code (client and server), you can call this method like:
// Desktop.call(method_name, args, done_callback);Desktop;
You can only call methods after the connection is made between Meteor and Electron, to make sure it's ready you can wrap your code in a startup block:Desktop;
When upgrading to newer versions, it's important to know that:
Once these files exists on disk, they will not be overwritten.
As these files above is never overwritten, in case of any API change that needs adjustments, these will have to be made manually.
Always keep the same desktop version in your Meteor, and inside the
.desktop folder, as per specified in
Do not open issues, use the chat channel instead.
This is very young and active software, so make sure your are always up to date before opening an issue. Follow the released fixes through the HISTORY.md file.
If you find any problem, please open a meaningful issue describing in detail how to reproduce the problem, which platform/os/arch type you're using, as well as the version of Meteor and Desktop, and any other info you may find usefull.
The MIT License (MIT) This package is forked from desktop package by Anderson Arboleya, (provided under MIT)