Utility inspired by electron-builder for bundling Revery applications into installable application packages.
This is extracted out from the Onivim 2 packaging scripts, and provides a way to get redistributable executables from your Revery projects.
This packager takes care of some of the heavy lifting, like:
- Windows: Bringing in the proper set of runtime DLL dependencies
- OS X: Bundling
dylibs
and remappingrpath
s to be relocatable - Linux: Bundling
so
libs and remappingrpath
's to be relocatable.
...but you don't have to worry about that - you can just run revery-packager
and be good to go.
npm install -g revery-packager`
- Ensure your Revery project is built and up-to-date (
esy install
,esy build
). - Run
revery-packager
at the root of your Revery project.
You'll find the release artifacts for the current platform in the _release
folder.
NOTE: Today,
revery-packager
doesn't support 'cross-platform' packaging - meaning you need to runrevery-packager
on each platform you wish to distribute builds. We recommend Azure Devops CI as a way build and get packages for all platforms - see our revery-quick-start pipeline for an example.
You can customize the behavior of the packager by adding a revery-packager
section to your package.json
, like:
package.json
"name": "revery-quick-start",
"version": "1.3.0",
"description": "Revery quickstart",
"license": "MIT",
"esy": {
"build": "refmterr dune build -p App",
"buildsInSource": "_build"
},
"revery-packager": {
"bundleName": "ExampleApp",
"bundleId": "com.example.app",
"displayName": "Revery Example App",
"mainExecutable": "App",
"windows": {
"packages": ["zip"],
"iconFile": "assets/icon.ico"
},
"darwin": {
"packages": ["tar", "dmg"],
"iconFile": "assets/icon.icns"
},
"linux": {
"packages": ["tar", "appimage"]
}
},
...
The following properties are configurable:
bundleName
- The bundle name of the application. Used for manifests and for the filename.bundleId
- An identifier for the application. Used as theCFBundleIdentifier
for Mac.displayName
- Display name of the application, used for installers, desktop entries, etc.mainExecutable
- The entry point for the application. There should be no.exe
suffix added.packages
- per-platform list of packages to build:dmgBackground
- MAC-ONLY - background to use for DMG installerappImageType
- LINUX-ONLY - type to use in the desktop entry for the AppImageappImageCategory
- LINUX_ONLY - category to use for the desktop entry for the AppImageiconFile
- Windows - an
.ico
file to use for the executable - Linux - a
.png
file to use the desktop entry - Mac - an
.icns
file to use for the app icon
- Windows - an
You can also specify per-platform settings by using the windows
, darwin
, and linux
sections - you probably want to do this for settings like iconFile
.
- Windows
- Code signing
-
zip
package -
exe
installer -
msi
installer
- OSX
- Code signing
- Notarization
-
tar
package -
dmg
package
- Linux
- GPG signature
-
tar
package -
appimage
package
Copyright 2019 Outrun Labs, LLC