2.2.2 • Published 4 years ago

neon-load-or-build v2.2.2

Weekly downloads
104
License
MIT
Repository
github
Last release
4 years ago

neon-load-or-build

Build tool and bindings loader for Neon Bindings that supports prebuilds.

npm install neon-load-or-build

Heavily inspired on and based on node-gyp-build.

Usage

neon-load-or-build as a the CLI works similar to neon build except that it will check if a build or prebuild is present before rebuilding your project.

It's main intended use is as an npm install script and bindings loader for native modules that bundle prebuilds (inspired by prebuildify).

First add neon-load-or-build as an install script to your native neon-bindings project (let's assume it's called "my-package"):

{
  "name": "my-package",
  ...
  "scripts": {
    "install": "neon-load-or-build"
  }
}

Then in your neon module's lib/index.js, instead of using the default require('../native), use node-load-or-build to load your binding.

module.exports = require('neon-load-or-build')({
  moduleName: 'my-package', // optional but recommended
  dir: __dirname + '/..',
})

When targeting nodejs-mobile, you must have moduleName, because it more accurately finds the correct path on both iOS and Android, even if you use noderify (or even if you don't).

If you do these two things and bundle prebuilds, your Neon module will work for most platforms without having to compile on install time AND will work in both node and electron without the need to recompile between usage.

Users can override neon-load-or-build and force compiling by doing npm install --build-from-source.

Prebuilds will be attempted loaded from MODULE_PATH/prebuilds/... and then next EXEC_PATH/prebuilds/....

Supported prebuild names

If so desired you can bundle more specific flavors, for example musl builds to support Alpine, or targeting a numbered ARM architecture version.

These prebuilds can be bundled in addition to generic prebuilds; neon-load-or-build will try to find the most specific flavor first. Prebuild filenames are composed of tags. The runtime tag takes precedence, as does an abi tag over napi. For more details on tags, please see prebuildify.

Values for the libc and armv tags are auto-detected but can be overridden through the LIBC and ARM_VERSION environment variables, respectively.

License

MIT