Get the current package's binary path (using the package.json
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
field is correctly setup. - decouples the binary path from the tests, which allows moving the file without rewriting the tests.
const { getBinPathSync } = require('get-bin-path')
// `binPath` is the absolute path to the current package's binary
const binPath = getBinPathSync()
const { getBinPath } = require('get-bin-path')
// Test runner
const test = require('ava')
// Library to execute child processes / commands
const execa = require('execa')
test('Binary file should return "true"', async (t) => {
const binPath = await getBinPath()
const { stdout } = await execa(binPath)
t.is(stdout, 'true')
})
npm install get-bin-path
This returns the current package's binary absolute path:
const { getBinPathSync } = require('get-bin-path')
const binPath = getBinPathSync()
This can be either synchronous or asynchronous:
const { getBinPath } = require('get-bin-path')
const asyncFunc = async () => {
const binPath = await getBinPath()
}
If there are several binaries, you can choose between them:
const { getBinPathSync } = require('get-bin-path')
const binPath = getBinPathSync({ name: 'binary-name' })
The current directory can be overridden (for example with monorepos):
const { getBinPathSync } = require('get-bin-path')
const binPath = getBinPathSync({ cwd: '/currentDirectory' })
When no package.json
or binary can be found, undefined
is returned instead.
options
: object
Returns: string | undefined
options
: object
Returns: Promise<string | undefined>
Type: object
Type: string
Default: package.json
name
property
Name of the binary. Only needs to be specified when the package exports several binaries.
Type: string
Default: Current directory
Override the current directory, which is used when retrieving the
package.json
.
This is useful when using monorepos.
execa
: process execution for humans
If you found a bug or would like a new feature, don't hesitate to submit an issue on GitHub.
For other questions, feel free to chat with us on Gitter.
6210Everyone 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 💻 |