Get the current package's binary path (using the package.json
bin
or
directories.bin
field).
This is useful when testing a package's binary. Using get-bin-path
(as opposed
to hard-coding the path to the binary):
- validates that the
package.json
bin
ordirectories.bin
field is correctly setup - decouples the binary path from the tests, which allows moving the file without rewriting the tests
Please reach out if you're looking for a Node.js API or CLI engineer (11 years of experience). Most recently I have been Netlify Build's and Netlify Plugins' technical lead for 2.5 years. I am available for full-time remote positions.
import { getBinPath } from 'get-bin-path'
// `binPath` is the absolute path to the current package's binary
const binPath = await getBinPath()
// Test runner
import test from 'ava'
// Library to execute child processes / commands
import { execa } from 'execa'
import { getBinPath } from 'get-bin-path'
const binPath = await getBinPath()
test('Binary file should return "true"', async (t) => {
const { stdout } = await execa(binPath)
t.is(stdout, 'true')
})
npm install get-bin-path
This package works in Node.js >=18.18.0.
This is an ES module. It must be loaded using
an import
or import()
statement,
not require()
. If TypeScript is used, it must be configured to
output ES modules,
not CommonJS.
options
: object
Returns: Promise<string | undefined>
Returns the current package's binary absolute path. When no package.json
or
binary can be found, undefined
is returned instead.
import { getBinPath } from 'get-bin-path'
const binPath = await getBinPath()
options
: object
Returns: string | undefined
Same but synchronous.
import { getBinPathSync } from 'get-bin-path'
const binPath = getBinPathSync()
Type: object
Type: string
Default: package.json
name
field
Name of the binary.
Only needs to be specified when the package exports several binaries in the
package.json
bin
or
directories.bin
field.
{
"name": "foo",
"bin": {
"foo": "path/to/foo.js",
"bar": "path/to/bar.js"
}
}
When the package.json
's bin
or directories.bin
field is a string
, the
package
name
field
must match the name
option.
Type: string
Default: Current directory
Override the current directory, which is used when retrieving the
package.json
.
bin-path-cli
: execute the current package's binaryexeca
: process execution for humans
For any question, don't hesitate to submit an issue on GitHub.
Everyone is welcome regardless of personal background. We enforce a Code of conduct in order to promote a positive and inclusive environment.
This project was made with ❤️. The simplest way to give back is by starring and sharing it online.
If the documentation is unclear or has a typo, please click on the page's Edit
button (pencil icon) and suggest a correction.
If you would like to help us fix a bug or add a new feature, please check our guidelines. Pull requests are welcome!
Thanks go to our wonderful contributors:
ehmicky 💻 🎨 🤔 📖 |
Daniel Stockman 💻 |
Kabir Baidhya 💻 |
Minh Nguyen 🤔 |
Tyler Miller 🤔 |
Tommy 🤔 💻 |