Gathering detailed insights and metrics for electron-installer-redhat
Gathering detailed insights and metrics for electron-installer-redhat
Gathering detailed insights and metrics for electron-installer-redhat
Gathering detailed insights and metrics for electron-installer-redhat
npm install electron-installer-redhat
Module System
Min. Node Version
Typescript Support
Node Version
NPM Version
81 Stars
224 Commits
44 Forks
6 Watching
11 Branches
24 Contributors
Updated on 28 Aug 2024
JavaScript (92.26%)
EJS (6.45%)
HTML (0.69%)
CSS (0.37%)
Shell (0.24%)
Cumulative downloads
Total Downloads
Last day
-11.5%
6,886
Compared to previous day
Last week
-8.5%
47,325
Compared to previous week
Last month
15.8%
223,062
Compared to previous month
Last year
43.7%
1,926,396
Compared to previous year
Create a Red Hat package for your Electron app.
This tool requires Node 10 or greater and rpmbuild
4.13 or greater to build the .rpm
package.
Note: RPM 4.13.0 or greater is required due to the boolean dependency feature.
On Fedora you can do something like this:
$ sudo dnf install rpm-build
While on Debian/Ubuntu you'll need to do this instead:
$ sudo apt-get install rpm
For use from command-line:
$ npm install -g electron-installer-redhat
For use in npm scripts or programmatically:
$ npm install --save-dev electron-installer-redhat
Say your Electron app lives in path/to/app
, and has a structure like this:
.
├── LICENSE
├── README.md
├── node_modules
│  ├── electron-packager
│  └── electron
├── package.json
├── resources
│  ├── Icon.png
│  ├── IconTemplate.png
│  └── IconTemplate@2x.png
└── src
├── index.js
├── main
│  └── index.js
└── renderer
├── index.html
└── index.js
You now run electron-packager
to build the app for Red Hat:
$ electron-packager . app --platform linux --arch x64 --out dist/
And you end up with something like this in your dist
folder:
.
└── dist
  └── app-linux-x64
  ├── LICENSE
  ├── LICENSES.chromium.html
  ├── content_shell.pak
  ├── app
  ├── icudtl.dat
  ├── libgcrypt.so.11
  ├── libnode.so
  ├── locales
  ├── natives_blob.bin
  ├── resources
  ├── snapshot_blob.bin
  └── version
How do you turn that into a Red Hat package that your users can install?
If you want to run electron-installer-redhat
straight from the command-line, install the package globally:
$ npm install -g electron-installer-redhat
And point it to your built app:
$ electron-installer-redhat --src dist/app-linux-x64/ --dest dist/installers/ --arch x86_64
You'll end up with the package at dist/installers/app-0.0.1-1.x86_64.rpm
.
If you want to run electron-installer-redhat
through npm, install the package locally:
$ npm install --save-dev electron-installer-redhat
Edit the scripts
section of your package.json
:
1{ 2 "name": "app", 3 "description": "An awesome app!", 4 "version": "0.0.1", 5 "scripts": { 6 "start": "electron .", 7 "build": "electron-packager . app --platform linux --arch x64 --out dist/", 8 "rpm64": "electron-installer-redhat --src dist/app-linux-x64/ --dest dist/installers/ --arch x86_64" 9 }, 10 "devDependencies": { 11 "electron-installer-redhat": "*", 12 "electron-packager": "*", 13 "electron-prebuilt": "*" 14 } 15}
And run the script:
$ npm run rpm64
You'll end up with the package at dist/installers/app-0.0.1-1.x86_64.rpm
.
Install the package locally:
1$ npm install --save-dev electron-installer-redhat
And write something like this:
1const installer = require('electron-installer-redhat') 2 3const options = { 4 src: 'dist/app-linux-x64/', 5 dest: 'dist/installers/', 6 arch: 'x86_64' 7} 8 9async function main (options) { 10 console.log('Creating package (this may take a while)') 11 12 try { 13 await installer(options) 14 console.log(`Successfully created package at ${options.dest}`) 15 } catch (err) { 16 console.error(err, err.stack) 17 process.exit(1) 18 } 19} 20main(options)
You'll end up with the package at dist/installers/app-0.0.1-1.x86_64.rpm
.
Note: As of 2.0.0, the Node-style callback pattern is no longer available. You can use util.callbackify
if this is required for your use case.
Even though you can pass most of these options through the command-line interface, it may be easier to create a configuration file:
1{ 2 "dest": "dist/installers/", 3 "icon": "resources/Icon.png", 4 "categories": [ 5 "Utility" 6 ] 7}
And pass that instead with the config
option:
1$ electron-installer-redhat --src dist/app-linux-x64/ --arch x86_64 --config config.json
Anyways, here's the full list of options:
Type: String
Default: undefined
Path to the folder that contains your built Electron application.
Type: String
Default: undefined
Path to the folder that will contain your Red Hat installer.
Type: Function
Default: function (dest, src) { return path.join(dest, src); }
Function that renames all files generated by the task just before putting them in your dest
folder.
Type: String
Default: package.name
Name of the package (e.g. atom
), used in the Name
field of the spec
file.
Type: String
Default: package.productName || package.name
Name of the application (e.g. Atom
), used in the Name
field of the desktop
specification.
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.
Type: String
Default: package.description
Short, one-line description of the application; do not end with a period.
Used in the Summary
field of the spec
file.
Type: String
Default: package.productDescription || package.description
Long description of the application, used in the %description
tag of the spec
file.
Type: String
Default: package.version
Version number of the package, used in the Version
field of the spec
file.
Type: String
Default: package.revision || 1
Revision number of the package, used in the Release
field of the spec
file.
Type: String
Default: package.license
License of the package, used in the License
field of the spec
file.
Type: String
Default: undefined
Machine architecture the package is targeted to, used to set the --target
option.
Type: String
Default: Operating system platform of the host machine. For possible values see Node.js process.platform
Operating system platform the package is targeted to, used to set the --target
option.
Type: Array[String]
Default: The minimum list of packages needed for Electron to run
Packages that are required when the program starts, used in the Requires
field of the spec
file.
All user requirements will be appended to the default array of requirements, and any duplicates will be removed.
Type: String
Default: package.homepage || package.author.url
URL of the homepage for the package, used in the URL
field of the spec
specification.
Type: Number
Default: 2
Package compression level, from 0
to 9
.
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:
1{ 2 src: '...', 3 dest: '...', 4 name: 'foo', 5 bin: 'resources/cli/launcher.sh' 6}
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
Type: Array[String]
Default: []
Command-line arguments to pass to the executable. Will be added to the Exec
field of the desktop
specification.
Type: String
or Object[String:String]
Default: undefined
Path to a single image that will act as icon for the application:
1{ 2 icon: 'resources/Icon.png' 3}
Or multiple images with their corresponding resolutions:
1{ 2 icon: { 3 '48x48': 'resources/Icon48.png', 4 '64x64': 'resources/Icon64.png', 5 '128x128': 'resources/Icon128.png', 6 '256x256': 'resources/Icon256.png', 7 'scalable': 'resources/Icon.svg', 8 'symbolic': 'resources/Icon-symbolic.svg', 9 } 10}
Per the icon theme specification, image files must either PNGs or SVGs. The SVG format can only be used for the scalable
or symbolic
resolutions.
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.
Type: Array[String]
Default: []
MIME types the application is able to open, used in the MimeType
field of the desktop
specification.
If this option is specified, make sure to run update-desktop-database &> /dev/null
as part of the post
and postun
scripts to refresh the cached database of MIME types.
Type: Object[String:String]
Default: undefined
Path to installation scripts with their corresponding name. The files contents will be added to the spec file.
1{ 2 scripts: { 3 'pre': 'resources/pre_script', 4 'post': 'resources/post_script', 5 'preun': 'resources/preun_script', 6 'postun': 'resources/postun_script' 7 } 8}
Type: String
Default: resources/desktop.ejs
The absolute path to a custom template for the generated FreeDesktop.org desktop entry file.
Type: String
Default: resources/spec.ejs
The absolute path to a custom template for the generated SPEC file.
git clone git://github.com/electron-userland/electron-installer-redhat.git
Copyright (c) 2016 Daniel Perez Alvarez (unindented.org). This is free software, and may be redistributed under the terms specified in the LICENSE file.
No vulnerabilities found.
Reason
no dangerous workflow patterns detected
Reason
GitHub workflow tokens follow principle of least privilege
Details
Reason
no binaries found in the repo
Reason
0 existing vulnerabilities detected
Reason
license file detected
Details
Reason
Found 18/20 approved changesets -- score normalized to 9
Reason
dependency not pinned by hash detected -- score normalized to 6
Details
Reason
0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
Reason
project is not fuzzed
Details
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
Score
Last Scanned on 2024-11-25
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More