Sobre la base de los comentarios de https://github.com/creationix/nvm/pull/97:
Al instalar paquetes con NPM mediante el interruptor mundial -g el paquete termina en el directorio adecuado (es decir .nvm/$ VERSION/lib/node_modules) Sin embargo, node no puede requerirlo ya que de alguna manera no está buscando en su prefijo.
Así, utilizando npm install -g xxxxx
pondrá los módulos en la ubicación correcta de NVM, pero si intenta require
uno de ellos nodo no puede encontrar el módulo. Todavía estoy jugando con esto y lo actualizaré si encuentro una solución.
actualización
¿Dónde NPM puso node_modules? (Ver https://docs.npmjs.com/files/folders)
- de instalación local (por defecto): pone cosas en ./node_modules de la raíz del paquete actual.
- Instalación global (con -g): coloca cosas en/usr/local o donde sea que esté instalado el nodo.
- Instalarlo localmente si va a
require()
.
- Instálelo globalmente si va a ejecutarlo en la línea de comandos.
- Si necesita ambos, instálelos en ambos lugares, o use
npm link
.
Así que lo que hice fue correr npm init
(ver http://npmjs.org/doc/init.html) en mi dir proyectos raíz que genera package.json. Ahora, cuando ejecuto npm install xxxxx
, creo un directorio node_modules en mi carpeta de proyecto (que agrego a mi .gitignore). Esto funciona para los módulos que requiero en mi código.
Para comandos como CoffeeScript los instalo con npm install -g coffee-script
, que los coloca en el directorio correcto (.nvm/$ VERSION/lib/node_modules). Si bien no puedo solicitar estos módulos (el enlace npm debería resolver este problema), puedo ejecutar los comandos, es decir, coffee
.
Finalmente una buena respuesta a esto, me he estado dando vueltas en esto por un tiempo. –