NPM : how to source ./node_modules/.bin folder?

I can give you an inelegant solution, which is working for me. I just exported my path in my .bashrc file.

export PATH="$PATH:./node_modules/.bin"

Edit: It's been a while, but I have changed my strategy to use npm scripts instead. In the above case, setup package.json as follows:

"scripts": {
    "sails": "sails"
}

Which you can then run with

npm run sails

or with arguments

npm run sails -- <args>

You should use the npm bin command to get an absolute path to your current node bin directory.

For example:

➤ lessc
bash: lessc: command not found
➤ npm bin
/home/brice/[...]/node_modules/.bin
➤ export PATH=$(npm bin):$PATH
➤ lessc --version
lessc 1.7.3 (Less Compiler) [JavaScript]

This avoids the problem of relative paths, especially if you're going to be using this in a build system that will invoke the command in subdirectories.


To use on the command line like sails generate foo you will need to install the npm module globally.

npm install -g sails

You could also use the path to the bin in the command if you don't want to install globally:

./node_modules/sails/bin/sails.js generate foo

A bit more robust is:

export PATH=$(npm bin):$PATH

You can either run it, add it to your shell profile, or create an alias like:

alias snpm='export PATH=$(npm bin):$PATH'

If you do go the alias route, be sure to use single quotes so it delays the execution of the variables!