@xhmikosr/bin-wrapper
Version:
Binary wrapper that makes your programs seamlessly available as local dependencies
157 lines (91 loc) • 3.15 kB
Markdown
> Binary wrapper that makes your programs seamlessly available as local dependencies
```sh
npm install @xhmikosr/bin-wrapper
```
```js
import path from 'node:path';
import BinWrapper from '@xhmikosr/bin-wrapper';
const base = 'https://github.com/imagemin/gifsicle-bin/raw/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('vendor'))
.use(process.platform === 'win32' ? 'gifsicle.exe' : 'gifsicle')
.version('>=1.71');
(async () => {
await bin.run(['--version']);
console.log('gifsicle is working');
})();
```
Get the path to your binary with `bin.path()`:
```js
console.log(bin.path());
//=> 'path/to/vendor/gifsicle'
```
Creates a new `BinWrapper` instance.
Type: `Object`
* Type: `boolean`
* Default: `false`
Whether to skip the binary check or not.
* Type: `number`
* Default: `1`
Strip a number of leading paths from file names on extraction.
* Type: `Object`
* Default: `{}`
Extra options forwarded to [`@xhmikosr/decompress`](https://github.com/XhmikosR/decompress) e.g. `plugins`.
The `strip` key is ignored here; use the top-level `strip` option instead.
Adds a source to download.
Type: `string`
Accepts a URL pointing to a file to download.
Type: `string`
Tie the source to a specific OS.
Type: `string`
Tie the source to a specific arch.
Type: `string`
Expected `"<algorithm>:<hex>"` digest, verified against the download before extraction (see
[`@xhmikosr/downloader`](https://github.com/XhmikosR/download#optionshash)).
```js
bin.src(`${base}/linux/x64/gifsicle`, 'linux', 'x64', 'sha256:9f86d0...');
```
Type: `string`
Accepts a path which the files will be downloaded to.
Type: `string`
Define which file to use as the binary.
Returns the full path to your binary.
Returns an array of the source URLs matching the current OS and arch.
Type: `string`
Define a [semver range](https://github.com/npm/node-semver#ranges) to check
the binary against.
Runs the search for the binary. If no binary is found it will download the file
using the URL provided in `.src()`.
* Type: `Array`
* Default: `['--version']`
Command to run the binary with. If it exits with code `0` it means that the
binary is working.
MIT © [Kevin Mårtensson](http://kevinmartensson.com)