Setup and Auto-Generate the Binary Packages
This post details everything that we do to setup these builds, so that other maintainers can make life easier for users that want to install one of these modules. Using node-pre-gyp with Continuous Integration (CI) tools like TravisCI (build for Linux and OSX) and AppVeyor (build for Windows platforms) allow us to automatically generate, package, publish and have binary packages available each time a new version of the module is released. We accomplish this using node-pre-gyp, which provides a very solid process to set up packaging and publishing of precompiledīinaries. This is why we have taken it upon ourselves to help provide precomplied binaries for all major platforms, for the modules that we use in Cylon that have native dependencies. It is especially difficult when doing a workshop or hackathon, when many attendees do not have all the dependencies required to compile these native extensions. We have come across this issue quite often, since several Cylon modules also have dependencies for these same npm modules.
This requires that the user of the modules have a development environment for compiling native code, and that is also is up to date, which is not always the case. Some of those modules also require platform specific native dependencies and libraries for OSX, Linux, or Windows.
Using some of the coolest npm modules for developing JavaScript robotics like node-serialport, node-opencv and gamepad often require compiling native extensions.
It is always a high priority here at The Hybrid Group to make Cylon.js, and all of the various Node.js modules that it depends on, easier to install and use.