get-bin-path
get-bin-path copied to clipboard
Get the current package's binary path
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.
Examples
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')
})
Install
npm install get-bin-path
This package is an ES module and must be loaded using
an import
or import()
statement,
not require()
.
API
getBinPath(options?)
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()
getBinPathSync(options?)
options
: object
Returns: string | undefined
Same but synchronous.
import { getBinPathSync } from 'get-bin-path'
const binPath = getBinPathSync()
options
Type: object
options.name
Type: string
Default: package.json
name
property
Name of the binary. Only needs to be specified when the package exports several binaries.
options.cwd
Type: string
Default: Current directory
Override the current directory, which is used when retrieving the
package.json
.
See also
-
execa
: process execution for humans
Support
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.
Contributing
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 💻 |