Patch require()
to rebuild a node module if it has been built for a different node version.
Works with electron as well and has been tested on OSX and Windows.
Once, as the first line of your program, include this line:
require('require-rebuild')();
That's it! Now all further require()
calls, no matter how deep in your dependency tree, will make sure a native module has been compiled for the right node version.
To see it in action, install a native module, then switch to a different node version with a different abi, and see how it rebuilds on the fly:
$ node example.js
Recompiling node_modules/bignum
CXX(target) Release/obj.target/bignum/bignum.o
SOLINK_MODULE(target) Release/bignum.node
Done!
This belongs into application code, not into a lib. Better leave it to a lib's consumer how to build their dependencies.
At this moment, those build systems are supported
node-gyp
prebuild
MIT