node-gyp-build
Build tool and bindings loader for node-gyp
that supports prebuilds.
npm install node-gyp-build
Use together with prebuildify
to easily support prebuilds for your native modules.
Usage
Note. Prebuild names have changed in prebuildify@3
and node-gyp-build@4
. Please see the documentation below.
node-gyp-build
works similar to node-gyp 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 using prebuildify
.
First add node-gyp-build
as an install script to your native project
{
...
"scripts": {
"install": "node-gyp-build"
}
}
Then in your index.js
, instead of using the bindings
module use node-gyp-build
to load your binding.
var binding = require('node-gyp-build')(__dirname)
If you do these two things and bundle prebuilds with prebuildify
your native 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 node-gyp-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/...
(the latter allowing use with zeit/pkg
)
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; node-gyp-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