Node Version Manager (NVM) npm installing modules to common folder
I've installed NVM for node.js using the instructions from this post:
When I switch between node versions and then use npm to install a module, all the modules are placed in the same 'node_modules' folder (~/node_modules/) instead of in the 'node_modules' directory specific to that version of node?
Any idea on how to remedy this?
Based on the comments from https://github.com/creationix/nvm/pull/97:
When installing packages with npm using the global switch -g the package ends up in the proper directory (i.e. .nvm/$VERSION/lib/node_modules), however node is unable to require it since it somehow isn't searching on it's prefix.
npm install -g xxxxx will put the modules in the correct location for NVM but if you try to
require one of them node can't find the module. I am still playing around with this and will update if I find a solution.
Where does NPM put node_modules? (see https://docs.npmjs.com/files/folders)
- Local install (default): puts stuff in ./node_modules of the current package root.
- Global install (with -g): puts stuff in /usr/local or wherever node is installed.
- Install it locally if you're going to
- Install it globally if you're going to run it on the command line.
- If you need both, then install it in both places, or use
So what I did was run
npm init (see http://npmjs.org/doc/init.html) in my projects root dir which generated package.json. Now when I run
npm install xxxxx it creates a node_modules dir in my project folder (which I add to my .gitignore). This works for modules that I require in my code.
For commands such as CoffeeScript I install with
npm install -g coffee-script which puts it in the correct directory (.nvm/$VERSION/lib/node_modules). While I can't require these modules (npm link should solve this problem) I can run the commands - i.e.