grunt-electron-redhat-installer
Create a Red Hat package for your Electron app.
🚨 This package has been renamed to grunt-electron-installer-redhat
! 🚨
Requirements
This tool requires rpmbuild
to build the .rpm
package. On Fedora you can do something like this:
$ sudo dnf install rpm-build
While on Ubuntu you'll need to do this instead:
$ sudo apt-get install rpm
Getting Started
This plugin requires Grunt ~0.4.0
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-electron-redhat-installer --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt;
This plugin was designed to work with Grunt 0.4.x. If you're still using grunt v0.3.x it's strongly recommended that you upgrade, but in case you can't please use v0.3.2.
Installer task
Run this task with the grunt electron-redhat-installer
command.
Task targets, files and options may be specified according to the grunt Configuring tasks guide.
Usage
Say your app lives in path/to/app
, and has a structure like this:
$ tree path/to/app/ -L 2
path/to/app/
├── LICENSE
├── index.js
├── main
│ ├── index.js
│ └── squirrel.js
├── node_modules
│ ├── fs-plus
│ └── yargs
├── package.json
└── renderer
├── index.css
├── index.html
└── index.js
To create a .rpm
package from your app, the configuration for your task would look like this:
'electron-redhat-installer': app: options: arch: 'x86_64' src: 'path/to/app/' dest: 'path/to/out/'
The task will try to extract all necessary information from your package.json
, and then generate your package at path/to/out
.
You can also create different packages for different architectures, while manually overriding certain options:
'electron-redhat-installer': options: productName: 'Foo' productDescription: 'Bar baz qux.' categories: 'Utility' { return dest + '<%= name %>-<%= version %>-<%= revision %>.<%= arch %>.rpm'; } linux32: options: arch: 'x86' src: 'path/to/linux32/' dest: 'path/to/out/linux32/' linux64: options: arch: 'x86_64' src: 'path/to/linux64/' dest: 'path/to/out/linux64/'
Options
src
Type: String
Default: undefined
Path to the folder that contains your built Electron application.
dest
Type: String
Default: undefined
Path to the folder that will contain your Red Hat installer.
options.name
Type: String
Default: package.name
Name of the package (e.g. atom
), used in the Name
field of the spec
file.
Check out the Fedora Naming Guidelines.
options.productName
Type: String
Default: package.productName || package.name
Name of the application (e.g. Atom
), used in the Name
field of the desktop
specification.
options.genericName
Type: String
Default: package.genericName || package.productName || package.name
Generic name of the application (e.g. Text Editor
), used in the GenericName
field of the desktop
specification.
options.description
Type: String
Default: package.description
Short description of the application, used in the Summary
field of the spec
file.
options.productDescription
Type: String
Default: package.productDescription || package.description
Long description of the application, used in the %description
tag of the spec
file.
options.version
Type: String
Default: package.version
Version number of the package, used in the Version
field of the spec
file.
options.revision
Type: String
Default: package.revision
Revision number of the package, used in the Release
field of the spec
file.
options.license
Type: String
Default: package.license
License of the package, used in the License
field of the spec
file.
options.group
Type: String
Default: undefined
Group of the package, used in the Group
field of the spec
file.
options.arch
Type: String
Default: undefined
Machine architecture the package is targeted to, used to set the --target
option.
options.requires
Type: Array[String]
Default: ['lsb']
Packages that are required when the program starts, used in the Requires
field of the spec
file.
options.homepage
Type: String
Default: package.homepage || package.author.url
URL of the homepage for the package, used in the Homepage
field of the control
specification.
options.bin
Type: String
Default: package.name
Relative path to the executable that will act as binary for the application, used in the Exec
field of the desktop
specification.
The generated package will contain a symlink /usr/bin/<%= options.name %>
pointing to the path provided here.
For example, providing this configuration:
options: name: 'foo' bin: 'resources/cli/launcher.sh' src: '...' dest: '...'
Will create a package with the following symlink:
usr/bin/foo@ -> ../share/foo/resources/cli/launcher/sh
And a desktop specification with the following Exec
key:
Exec=foo %U
options.icon
Type: String
Default: undefined
Path to the image that will act as icon for the application, used in the Icon
field of the desktop
specification.
options.categories
Type: Array[String]
Default: []
Categories in which the application should be shown in a menu, used in the Categories
field of the desktop
specification.
For possible values check out the Desktop Menu Specification.
options.rename
Type: Function
Default: function (dest, src) { return dest + src; }
Function that renames all files generated by the task just before putting them in your dest
folder.
Meta
- Code:
git clone git://github.com/unindented/grunt-electron-redhat-installer.git
- Home: https://github.com/unindented/grunt-electron-redhat-installer/
Contributors
- Daniel Perez Alvarez (unindented@gmail.com)
License
Copyright (c) 2015 Daniel Perez Alvarez (unindented.org). This is free software, and may be redistributed under the terms specified in the LICENSE file.