How 
to 
build 
an 
executable 
with 
NodeJS

The tool that lets us do it, is called pkg and is located at https://www.npmjs.com/package/pkg

Introduction

It's a great day, you've build a simple node app that gets weather info from an API and display the information to the console. You have called the app weather.js, and obviously you run it like this: node weather.js. There are 2 downsides for this approach, first and foremost, you need node installed in your computer along with node modules (if your app requires them). So the distribution of your app is limited to only those who have node installed (that's bad). Finally your app is not directly callable with a double click, you need first to open cmd and then run it. These 2 downsides limit your power to reach undiscovered grounds, so i'm here to change the way you look at node.

Why

  • Make a commercial version of your application without sources
  • Make a demo/evaluation/trial version of your app without sources
  • Instantly make executables for other platforms (cross-compilation)
  • Make some kind of self-extracting archive or installer
  • No need to install Node.js and npm to run the packaged application
  • No need to download hundreds of files via npm install to deploy your application.
  • Deploy it as a single file
  • Put your assets inside the executable to make it even more portable
  • Test your app against new Node.js version without installing it

How

Well let's get started, take note that we are not going to use ES6 and we are on Windows.

# Create a new folder
mkdir node-pkg

# Move into the folder
cd node-pkg

# Initialize your project
npm init

Now let's install a module that brings nice dialog boxes to javascript

Make sure you've installed all the necessary build tools (https://github.com/nodejs/node-gyp#installation) for your platform, then invoke:

npm install mitsobox --save

Within the root directory, create an index.js file and use this code

'use strict';

var mitsobox = require('mitsobox');

mitsobox.OK('Hello from node!', 'Just the title here');

Now install pkg globally

npm install -g pkg

Now build your app

pkg index.js --output myApp.exe

Look at your folder now, the executable is there, waiting for you to distribute it across the globe. Consider contributing to my mitsobox project on github :) https://github.com/jimfilippou/mitsobox

Thanks for reading!

Affiliate Links

Fastmail

I've been using Fastmail for over a year now, and it's been a game-changer for managing multiple email accounts. With their platform, you can seamlessly handle different email providers in one place. New users get 10% off their subscription!

Code: 7aa3c189

Tangem wallet

If you're looking for a secure and easy-to-use hardware wallet for your crypto assets, I recommend Tangem. Use my referral link to get a 10% discount on your first purchase!

Code: ZQ6MMC

1Password

1Password is the best password manager I've used. It's secure, easy to use, and has saved me countless hours.

Using these referral links helps support my work. I only recommend products I use and trust. Thank you for your support!