Don't (always) npm install -g

Posted on Thu 26 November 2015 in JavaScript

Had a chat with a respected hacker friend of mine who did not know about this trick (although to be fair, I'm not sure I knew about it until all that long ago).

There's almost never any need to use npm install -g, you could argue it's an anti-pattern as it makes your software harder to install for other users and can easily cause conflcits between projects. The most common candidates for a bit of global installing are test and build utils like mocha, typescript and grunt-cli; instead of reaching for -g you can install them locally in your project and execute them from the symlink created in node_modules/.bin, eg:

npm install --save-dev mocha
./node_modules/.bin/mocha --help

You can also make use of the npm bin command which will resolve the nearest node_modules/.bin path to the cwd:

`npm bin`/mocha --help

As an added bonus, NPM scripts don't need to add the node_modules/.bin prefix - it's added automatically:

{
  "name": "my-awesome-pkg",
  "scripts": {
    "test": "mocha"
  }
}