2012-06-11 11 views
17

Quiero instalar paquetes localmente, pero npm siempre está instalando paquetes en la ubicación global. Estoy ejecutando el siguiente comando:npm no instalará paquetes localmente. ¿Qué pasa?

npm install serialport 

que no tienen un comando .npmrc y no estoy usando la bandera -g, así que no sé por qué no se instala localmente. Aquí hay un fragmento del volcado de configuración que muestra que global es falso: $ npm config ls -l | grep mundial mundial = false GlobalConfig = "/ usr/local/etc/npmrc" globalignorefile = "/ usr/local/etc/npmignore"

Y los paquetes todavía se están instalando como esto

[email protected] ../../../../node_modules/serialport 

Así que a menos que esté totalmente equivocado sobre lo que significa "local", esto parece incorrecto. Tenía la impresión de que "local" significaba en el directorio de trabajo actual para poder hacer un "requerimiento" en mi archivo de código principal. Ver: http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/ como se menciona en una pregunta previa relacionada con npm.

¿Puede alguien darme algunas pistas sobre esto? Muchas gracias.

P.S. No es específico del módulo serialport. Está sucediendo con todos ellos.

Respuesta

29

mayor parte de mi respuesta se puede encontrar: http://npmjs.org/doc/folders.html#More-Information

Lo que entiendo es que la NGP va a tratar de instalarlo en un lugar sensible. Entonces, si tiene un directorio project/node_modules y está en/project y realiza instalación npm, usará product/node_modules.

Ahora, si accidentalmente hiciste un cd project/css y haces instalar npm, npm continuará hasta que encuentre tu directorio node_modules. Esto es para evitar que accidentalmente lo instale en su project/css.

Entonces, en su caso, tiene un directorio node_module en algún lugar de la ruta de su proyecto. Así que supongo que puede solucionarlo borrando ese directorio o creando manualmente un directorio node_modules en su carpeta de proyectos.

+0

Sí, acabo de encontrar que yo y trató de responder a mi propia pregunta, pero los nuevos usuarios no pueden hacerlo hasta 8 horas después. Esto es lo que encontré que lo explicó. http://stackoverflow.com/questions/6514621/npm-install-locally – user1449536

+0

Sin preocupaciones, en realidad no estaba 100% seguro hasta que encontré esa página de documentación. – Pickels

+0

Su respuesta es casi correcta, pero esta carpeta se llama node_module ** s ** – idmean

5

Si tiene un archivo package.json en la carpeta que está tratando de instalar el paquete, entonces creará la carpeta node_modules correctamente.

package.json básico

{ 
    "name": "application-name", 
    "version": "0.0.1" 
}