typeoneerror typeoneerror - 1 year ago 58
Node.js Question

How to use package installed locally in node_modules?

How do I use a local version of a module in

. For example, in my app, I installed coffee-script:

npm install coffee-script

This installs it in
and the coffee command is in
. Is there a way to run this command when I'm in my project's main folder? I guess I'm looking for something similar to
bundle exec
in bundler. Basically, I'd like to specify a version of coffee-script that everyone involved with the project should use.

I know I can add the
flag to install it globally so coffee works fine anywhere, but what if I wanted to have different versions of coffee per project?

Answer Source

The problem with putting


into your PATH is that it only works when your current working directory is the root if your project directory structure (i.e. the location of node_modules)

Independent of what your working directory is, you can get the path of locally installed binaries with

npm bin

To execute a locally installed coffee binary independent of where you are in the project directory hierarchy you can use this bash construct

PATH=$(npm bin):$PATH coffee

I aliased this to npm-exec

alias npm-exec='PATH=$(npm bin):$PATH'

So, now I can

npm-exec coffee

to run the correct copy of coffee no matter of where I am

$ pwd

$ npm-exec which coffee

$ cd lib/
$ npm-exec which coffee

$ cd ~/project2
$ npm-exec which coffee