README
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 { getBinPathSync } from 'get-bin-path'
// `binPath` is the absolute path to the current package's binary
const binPath = getBinPathSync()
// Test runner
import test from 'ava'
// Library to execute child processes / commands
import execa from 'execa'
import { getBinPath } from 'get-bin-path'
test('Binary file should return "true"', async (t) => {
const binPath = await getBinPath()
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()
.
Usage
This returns the current package's binary absolute path:
import { getBinPathSync } from 'get-bin-path'
const binPath = getBinPathSync()
This can be either synchronous or asynchronous:
import { getBinPath } from 'get-bin-path'
const asyncFunc = async () => {
const binPath = await getBinPath()
}
If there are several binaries, you can choose between them:
import { getBinPathSync } from 'get-bin-path'
const binPath = getBinPathSync({ name: 'binary-name' })
The current directory can be overridden (for example with monorepos):
import { getBinPathSync } from 'get-bin-path'
const binPath = getBinPathSync({ cwd: '/currentDirectory' })
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
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 💻 |