Bundle Node.js in native applications
This module helps you automate including Node.js in binary distributions of your software. It handles the downloading of the Node.js version you specify, and lets you run npm from within the bundled Node.js environment โ which is especially important for modules with native add-ons. It's actually kinda tricky to get this working right, so this module exists to make it so you don't have to worry about those details.
This module was formerly called iojs-bundler, and as such it has not been tested on versions of Node.js prior to v4.0.0. It is also unlikely to work on Windows โ but PRs for Windows support would be welcome!
An example, using Gulp, minus proper error handling:
var nodeBundler = require("node-bundler")
gulp.task("node", function (done) {
var installer = nodeBundler("dist/my.app", "^4.0.0")
installer.install("Resources/ThirdParty/", function (err, installation) {
installation.npm("Resources/my-node-app", ["install"], function (err) {
return done()
})
})
})
var nodeBundler = require("node-bundler")
Returns a new Installer
instance. The targetPath
you specify should be the full path to your target application bundle, plugin bundle, etc.
The versionRange
is a semver range used to specify the highest allowed version of Node.js to install. It probably makes sense to specify a specific version, considering that if a new release of Node.js comes out in between runs, you may wind up with two versions installed in your application bundle, consuming unnecessary space.
Downloads and installs the Node.js binary distribution in a new directory, named something like node-v4.0.0-linux-x64
, inside the directory specified by relativeInstallPath
. Note that relativeInstallPath
is relative to the targetPath
parameter given to the nodeBundler()
function.
The callback
is a function which will be called with an error
as its first argument if there was an error during the install process. If there was no error, the second argument will be an Installation
instance.
Returns the Node.js version number of the installation.
Returns the path of the node
binary, relative to your application bundle target. You'll probably want to store this string somewhere inside your application bundle, so that your shipped application code can figure where to find the bundled node
binary.
Runs the bundled npm
binary in the context of the node.js installation. You specify npm
's current working directory relative to your application bundle target with the cwd
parameter. The arguments
and options
parameters are passed along to the child_process.spawn
function that runs npm
.
When complete, the callback
is called. If npm
exits with an error code or signal, the first argument will contain an Error
object.