@kumori/binary-install
v1.2.3
Published
A npm package to install cli binaries
Downloads
15
Readme
binary-cli-install
binary-cli-install is a tool to install CLIs written in go, rust, c, etc with npm/yarn into a node project.
Install
$ npm install --dev-save binary-cli-install
$ yarn add -D binary-cli-install
How to use it
Create a new npm package (needed props: [
version
,bin
,binary
])Create a
entrypoint.js
and set as as the bin file in yourpackage.json
Add a
binary
object to yourpackage.json
with
name
property set to the name of your cliurl
property set to the download link
- Import the Binary class, initialize it and call the run method
Example
// package.json
{
"name": "runtime-env",
"version": "0.0.0",
"bin": {
"exmplae": "entrypoint.js"
},
"files": ["entrypoint.js"],
"dependencies": {
"binary-cli-install": "file:/home/simon/src/binary-cli-install/"
},
"binary": {
"name": "runtime-env",
"url": "https://github.com/example/example/releases/download/v{{version}}/runtime-env_{{version}}_{{platform}}_{{arch}}.tar.gz"
}
}
// entrypoint.js
// importing both the Binary class and Mapper obejcts specificly for go to map the node arch & platform names to the go names
const {
Binary,
GO_ARCH_MAPPING,
GO_PLATFORM_MAPPING,
} = require("binary-cli-install");
// import your package.json
const { join } = require("path");
const packageJson = require(join("..", "package.json"));
// Pass the mappers and your package.json to the Binary class
const bin = new Binary(
packageJson,
GO_ARCH_MAPPING,
GO_PLATFORM_MAPPING,
false // set debug to true with info messages should be logged
);
bin.run();
How it works
Your entrypoint.js
script will be put into the node_modules/.bin
folder when your package is installed. It acts as a placeholder and will be replaced after the first execution with the binary CLI. To keep a consistent user experience, the js script will call the binary on the first run every run afterwards will just be the binary cli no js wrapper.