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
const getBinPathSync = // `binPath` is the absolute path to the current package's binaryconst binPath =
// Test runnerconst test = // Library to execute child processes / commandsconst execa = const getBinPath =
Install
npm install get-bin-path
Usage
This returns the current package's binary absolute path:
const getBinPathSync = const binPath =
This can be either synchronous or asynchronous:
const getBinPath = const asyncFunc = async { const binPath = await }
If there are several binaries, you can choose between them:
const getBinPathSync = const binPath =
The current directory can be overridden (for example with monorepos):
const getBinPathSync = const binPath =
When no package.json
or binary can be found, undefined
is returned instead.
getBinPathSync(options?)
options
: object
Returns: string | undefined
getBinPath(options?)
options
: object
Returns: Promise<string | undefined>
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
.
This is useful when using monorepos.
See also
execa
: process execution for humans
Support
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.
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 💻 |