# @mole-inc/bin-wrapper

> Binary wrapper that makes your programs seamlessly available as local dependencies

Latest version **8.0.1** (published 2022-12-08) · MIT license · 0 weekly downloads

## Install

```sh
npm install @mole-inc/bin-wrapper
pnpm add @mole-inc/bin-wrapper
yarn add @mole-inc/bin-wrapper
bun add @mole-inc/bin-wrapper
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 8.0.1 |
| Published | 2022-12-08 |
| First published | 2020-04-15 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM |
| Node | ^12.20.0 \|\| ^14.13.1 \|\| >=16.0.0 |
| Dependencies | 8 |
| Unpacked size | 815.2 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 2 |
| Maintainers | aaharu |
| Keywords | bin, check, local, wrapper |

## Links

- npm: https://www.npmjs.com/package/@mole-inc/bin-wrapper
- Repository: https://github.com/mole-inc/bin-wrapper
- Homepage: https://github.com/mole-inc/bin-wrapper#readme
- Issues: https://github.com/mole-inc/bin-wrapper/issues
- npm.io page: https://npm.io/package/@mole-inc/bin-wrapper

## Dependencies (8)

- [got](https://npm.io/package/got.md) ^11.8.5
- [ext-name](https://npm.io/package/ext-name.md) ^5.0.0
- [bin-check](https://npm.io/package/bin-check.md) ^4.1.0
- [file-type](https://npm.io/package/file-type.md) ^17.1.6
- [filenamify](https://npm.io/package/filenamify.md) ^5.0.2
- [os-filter-obj](https://npm.io/package/os-filter-obj.md) ^2.0.0
- [bin-version-check](https://npm.io/package/bin-version-check.md) ^5.0.0
- [content-disposition](https://npm.io/package/content-disposition.md) ^0.5.4

## Alternatives

- [messageformat](https://npm.io/package/messageformat.md) — 329.7K weekly downloads
- [@mintlify/scraping](https://npm.io/package/@mintlify/scraping.md) — 294.8K weekly downloads
- [@mintlify/previewing](https://npm.io/package/@mintlify/previewing.md) — 209.5K weekly downloads
- [@mintlify/prebuild](https://npm.io/package/@mintlify/prebuild.md) — 209.5K weekly downloads
- [@mintlify/link-rot](https://npm.io/package/@mintlify/link-rot.md) — 206.3K weekly downloads

## Recent versions

- 8.0.1 (latest) — 2022-12-08
- 8.0.0 — 2022-03-01
- 7.1.1 — 2021-12-04
- 7.1.0 — 2021-12-04
- 7.0.0 — 2021-06-29
- 6.0.1 — 2020-04-24
- 6.0.0 — 2020-04-17
- 5.0.0 — 2020-04-15

## README

# bin-wrapper [![Node CI](https://github.com/mole-inc/bin-wrapper/actions/workflows/nodejs.yml/badge.svg)](https://github.com/mole-inc/bin-wrapper/actions/workflows/nodejs.yml)

> Binary wrapper that makes your programs seamlessly available as local dependencies

[![Downloads](https://badgen.net/npm/dm/@mole-inc/bin-wrapper)](https://www.npmjs.com/package/@mole-inc/bin-wrapper)
[![Version](https://badgen.net/npm/v/@mole-inc/bin-wrapper)](https://www.npmjs.com/package/@mole-inc/bin-wrapper)
[![codecov](https://codecov.io/gh/mole-inc/bin-wrapper/branch/master/graph/badge.svg)](https://codecov.io/gh/mole-inc/bin-wrapper)

## Install

```
$ npm install @mole-inc/bin-wrapper
```


## Usage

```js
import {BinWrapper} from '@mole-inc/bin-wrapper';

const base = 'https://github.com/imagemin/gifsicle-bin/raw/master/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'
```

> if you have the requested binary installed globally, this one will be used instead (if everything works)

## API

### `new BinWrapper(options)`

Creates a new `BinWrapper` instance.

#### options

Type: `Object`

##### skipCheck

Type: `boolean`<br>
Default: `false`

Whether to skip the binary check or not.

##### filename

Type: `string`<br>
Default: `undefined`

Set the binary filename.

##### gotOptions

Type: `object`<br>
Default: `undefined`

Any of the [`https.request`](https://nodejs.org/api/https.html#https_https_request_options_callback) options.

https://github.com/sindresorhus/got/tree/v11#options

### .src(url, [os], [arch])

Adds a source to download.

#### url

Type: `string`

Accepts a URL pointing to a file to download.

#### os

Type: `string`

Tie the source to a specific OS.

#### arch

Type: `string`

Tie the source to a specific arch.

### .dest(destination)

#### destination

Type: `string`

Accepts a path which the files will be downloaded to.

### .use(binary)

#### binary

Type: `string`

Define which file to use as the binary.

### .path

Returns the full path to your binary.

### .version(range)

#### range

Type: `string`

Define a [semver range](https://github.com/isaacs/node-semver#ranges) to check
the binary against.

### .run([arguments])

Runs the search for the binary. If no binary is found it will download the file
using the URL provided in `.src()`.

#### arguments

Type: `Array`<br>
Default: `['--version']`

Command to run the binary with. If it exits with code `0` it means that the
binary is working.


## License

This is a fork of [kevva/bin-wrapper](https://github.com/kevva/bin-wrapper).

see LICENSE file.

---
_Source: https://npm.io/package/@mole-inc/bin-wrapper · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
