Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

embler

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

embler

Turn binaries into applications

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Embler

Turn binaries into applications.

Embler can be used with pkg turn a Node.js project into an app, without having to resort to Electron. Useful for making a web interface, or a basic menubar app.

Supports macOS app, dmg, zip and tar.gz. dmg requires macOS

Installation

npm install embler

Usage

  1. Specify options in your package.json like so:
    {
        "name": "affinity-photo",
        "author": "Serif",
        "version": "1.7.0",
        "scripts": {
            "build": "embler",
        },
        "embler": {
            "realName": "Affinity Photo",
            "appId": "com.seriflabs.affinityphoto",
            "mac": {
                "binary": "dist/affinity-photo-mac-bin",
                "icon": "icon.png",
                "formats": ["app", "dmg", "zip", "tar.gz"],
            }
        }
    }
    
  2. Run npm run build

Usage with pkg

  1. Run npm install pkg
  2. Configure pkg and embler to your liking (Usage example above)
  3. Set the scripts.build, bin and embler.mac.binary properties in your package.json like so:
{
    "bin": "index.js",
    "scripts": {
        "build": "pkg . --target macos --output dist/test-bin-macos && embler"
    },
    "embler": {
        "mac": {
            "binary": "dist/test-bin-macos"
        }
    }
}
  1. Run npm run build
  2. index.js is now an app.

API Usage

Supply options via json file:

const embler = require('embler')
await embler.build('embler.json')

Supply options directly:

const embler = require('embler')
await embler.build({
    name: "my-app",
    author: "kasper.space",
    version: "2.4.1",
    embler: {
        realName: "My App",
        // ...
    }
})

Options

name

  • Required unless embler.name is specified
  • The app's name. For example used for the app's process name
  • Recommended to not use spaces or non-basic special characters

author

  • Required unless embler.author is specified
  • The app's author

version

  • Required unless embler.version is specified
  • The version of the app

embler.realName = "${name}"

  • Recommended
  • The app's name. This is the name users will see
  • Spaces and special characters are allowed in this one

embler.appId = "com.example.${name}"

  • Recommended
  • The application id
  • Human-readable copyright line

embler.outputDir = "dist"

  • The output folder

embler.backgroundApp = false

  • Whether the app will just run in the background app. On macOS, it won't show up in the Dock

embler.name

  • Overrides name

embler.author

  • Overrides author

embler.version

  • Overrides version

embler.mac

  • Object which contains macOS-specific options
embler.mac.binary
  • Required
  • Path to the binary which will run when the app is opened
embler.mac.category
  • Recommended
  • The app's category. Shown in /Applications in Finder when View > Use Groups is enabled using View > Sort By > Application Category
  • Valid categories are listed in Apple's documentation
embler.mac.icon
  • Recommended
  • Path to your app's icon
  • .icns or .png
embler.mac.formats = ["app"]
  • Array of the formats Pakaer will output
  • Supports app, dmg, zip and tar.gz. Creating dmg requires macOS
embler.mac.dmgBackground
  • Path to a custom background image for the dmg
  • The resolution should be 660x400
  • To support retina displays, have an extra image at double resolution that ends with @2x. For example, you could have dmgbg.png and dmgbg@2x.png
embler.mac.darkModeSupport = true
  • Turn this to false to disable dark mode support.
embler.mac.customInfo = {}
  • In this object, you may add or overwrite Info.plist entries. Example:
    "customInfo": {
        "CFBundleDevelopmentRegion": "en"
    }
    

Dev Instructions

Get started

  1. Install Node.js
  2. Run npm install
  3. Set up ESLint support for your code editor

To be able to run/test Embler: 4. Go to ./test (This is where you test Embler) 5. Run npm install 6. Run npm run compile (Compiles index.js to binary)

To test Embler:

cd ./test
npm run pack

Publish new version

  1. Update CHANGELOG.md
  2. Bump the version number, commit and tag:
    npm version <version>
    
  3. Publish to npm:
    npm publish
    
  4. Create GitHub release with release notes

Keywords

FAQs

Package last updated on 20 Aug 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc