What is bin-wrapper?
The bin-wrapper npm package is a utility that helps you download and manage binaries for your Node.js projects. It allows you to specify a binary, download it if necessary, and make it available for use in your project. This is particularly useful for ensuring that the correct version of a binary is used, regardless of the environment in which your code is running.
What are bin-wrapper's main functionalities?
Download and manage binaries
This feature allows you to specify different sources for binaries based on the operating system and architecture. The code sample demonstrates how to set up a BinWrapper instance to download the gifsicle binary for different platforms and run it to check its version.
const BinWrapper = require('bin-wrapper');
const path = require('path');
const base = 'https://raw.githubusercontent.com/imagemin/gifsicle-bin/main/vendor';
const bin = new BinWrapper()
.src(`${base}/macos/gifsicle`, 'darwin')
.src(`${base}/linux/x64/gifsicle`, 'linux', 'x64')
.src(`${base}/win/x64/gifsicle.exe`, 'win32', 'x64')
.dest(path.join(__dirname, 'vendor'))
.use(process.platform === 'win32' ? 'gifsicle.exe' : 'gifsicle');
bin.run(['--version']).then(() => {
console.log('Binary is working');
}).catch(err => {
console.error('Binary failed to run', err);
});
Other packages similar to bin-wrapper
node-pre-gyp
node-pre-gyp is a tool that makes it easy to publish and install Node.js C++ addons from binaries. It provides a way to package and distribute precompiled binaries, which can be downloaded and used without requiring users to compile the code themselves. Compared to bin-wrapper, node-pre-gyp is more focused on C++ addons and their distribution, whereas bin-wrapper is more general-purpose for managing any kind of binary.
nexe
nexe is a command-line utility that compiles your Node.js application into a single executable file. It includes the Node.js runtime and your application code, making it easy to distribute and run your application on different systems. While bin-wrapper focuses on downloading and managing external binaries, nexe is about packaging your Node.js application into a standalone binary.
pkg
pkg is a tool that packages Node.js projects into executable files for different platforms. It allows you to create a single executable that includes your application code and the Node.js runtime. Similar to nexe, pkg is focused on creating standalone executables, whereas bin-wrapper is about managing external binaries that your project depends on.
bin-wrapper
Getting started
Install with npm: npm install bin-wrapper
Examples
All platform
and arch
specific options takes precedence over the base
options. See test.js for a full fleshed example.
var Bin = require('bin-wrapper');
var opts = {
name: 'Gifsicle',
bin: 'gifsicle',
path: __dirname + '/vendor',
url: 'http://url/to/gifsicle',
platform: {
win32: {
bin: 'gifsicle.exe',
url: [
'http://url/to/gifsicle.exe'
'http://url/to/gifsicle.dll'
]
}
}
}
var bin = new Bin(opts)
bin.check('--version', function (works) {
if (works) {
console.log('Binary downloaded and passed the test!')
}
});
Get the path to your binary with bin.path
.
console.log(bin.path);
API
.check(cmd, cb)
Check if a binary is present and working. If it isn't, download and test it by
running the binary with cmd
and see if it exits correctly.
License
MIT License (c) Kevin Mårtensson