Workaround for node-pre-gyp's lack of electron runtime detection (and a little bugfixing) #44
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
node-pre-gyp is used by some popular projects (like serialport) to provide precompiled binaries to most users. In electron's case it falls back to compilation and does so successfully.
Unfortunately, node-pre-gyp doesn't detect electron during runtime and tries to load native addons through the "normal" node path (...../node-v1234-os-arch.... instead of electron-v1234-os-arch).
Some pull requests have been submitted that fix the issue: mapbox/node-pre-gyp#177 and mapbox/node-pre-gyp#187 but they have been open for some months without any activity.
So I created a command-line switch (-p or --pre-gyp-fix) that copies the bindings' folder to the path current node-pre-gyp versions expect it to be in, when a fix is released in node-pre-gyp compatibility should not be broken and, since it's disabled by default it won't break anything to those not using it.
While developing this patch I noticed a couple of things
...so I fixed them in the process! :)