Codecov Build Node Gitter Twitter Medium

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()
// Test runner
const test = require('ava')
// Library to execute child processes / commands
const execa = require('execa')
const { getBinPath } = require('get-bin-path')

test('Binary file should return "true"', async (t) => {
  const binPath = await getBinPath()
  const { stdout } = await execa(binPath), '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.

See also

  • 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.

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:


💻 ğŸŽ¨ 🤔 📖

Daniel Stockman


Kabir Baidhya


Get Bin Path

Get the current package's binary path

Get Bin Path Info

⭐ Stars 16
🔗 Source Code
🕒 Last Update 10 months ago
🕒 Created 2 years ago
ğŸž Open Issues 0
➗ Star-Issue Ratio Infinity
ğŸ˜Ž Author ehmicky