¿Dónde instala npm paquetes?

977

¿Alguien puede decirme dónde puedo encontrar los módulos Node.js, que instalé usando npm?

trnc
fuente
3
en Linux mint es$HOME/.npm-global/lib/node_modules
Synxmax
99
Para que todos lo sepan, la instalación sin -gopción instalará un módulo en su directorio de trabajo, por ejemplo, si hace que un directorio diga ~/Desktop/tmpy cd ~/Desktop/tmpluego lo npm install appiumhaga ls, verá node_modules package-lock.jsonporque ha instalado un módulo de nodo appiumen su working directory... súper confuso porque -gesencialmente debería ser el defaultpero no es.
the_prole
2
@the_prole: gracias, fue increíblemente útil .
Fattie

Respuestas:

1143

Bibliotecas globales

Puede ejecutar npm list -gpara ver qué bibliotecas globales están instaladas y dónde están ubicadas. Úselo npm list -g | head -1para la salida truncada que muestra solo la ruta. Si desea mostrar solo los paquetes principales, no sus subpaquetes que se instalan junto con él, puede usarlos, npm list --depth=0que mostrarán todos los paquetes y para obtener solo los paquetes instalados globalmente, simplemente agregue -g, es decir npm list -g --depth=0.

En los sistemas Unix, normalmente se colocan en /usr/local/lib/nodeo /usr/local/lib/node_modulescuando se instalan globalmente. Si establece la NODE_PATHvariable de entorno en esta ruta, los módulos se pueden encontrar por nodo.

Windows XP - %USERPROFILE%\AppData\npm\node_modules
Windows 7, 8 y 10 -%USERPROFILE%\AppData\Roaming\npm\node_modules

Bibliotecas no globales

Las bibliotecas no globales se instalan en la node_modulessubcarpeta en la carpeta en la que se encuentra actualmente.

Puede ejecutar npm listpara ver las bibliotecas no globales instaladas para su ubicación actual.

Al instalar use la opción -g para instalar globalmente

npm install -g pm2- pm2 se instalará a nivel mundial. Por lo general, se encontrará en /usr/local/lib/node_modules(Usar npm root -gpara verificar dónde).

npm install pm2- pm2 se instalará localmente. Por lo general, se encontrará en el directorio local en/node_modules

Decko
fuente
26
Si está usando nvm, entonces sus módulos globales pueden estar en uno de varios lugares dependiendo de la versión del nodo que esté usando en ese momento. La mejor manera es usar npm list -gcomo se sugiere en otra respuesta.
incriptable el
73
no funciona para mí, muestra solo la carpeta bin. "npm root -g" funciona.
whitneyland
77
bajo Arch linux, los módulos globales están bajo / usr / lib. "npm --help" muestra la ubicación exacta como la última línea de la salida, por ejemplo: [email protected] / usr / lib / node_modules / npm
Gregor
20
para Windows 10, colocado en%USERPROFILE%\AppData\Roaming\npm\node_modules
Nirmal Goswami
11
"npm root -g" es correcto: la lista puede funcionar pero es demasiada información, ya que el otro comando solo le da la ubicación exacta que está buscando. stackoverflow.com/a/24295332/174965
Adam Tolley
581

El comando npm rootle indicará el directorio de instalación efectivo de sus paquetes npm.

Si su directorio de trabajo actual es un paquete de nodo o un subdirectorio de un paquete de nodo, npm rootle indicará el directorio de instalación local. npm root -gmostrará la raíz de instalación global independientemente del directorio de trabajo actual.

Ejemplo:

$ npm root -g
/usr/local/lib/node_modules

Ver la documentación.

Joe Hawkins
fuente
1
+1 en esta respuesta (al menos en Linux Mint 17 Qianna y npm 3.9.5). Mi node_modulescarpeta global está adentro /usr/local/lib/node_modules. Cuando lo hago, es decir sudo npm uninstall browserify -g(suponiendo que lo había hecho sudo npm install browserify -gantes), lo elimina de allí.
nik_m 01 de
10
Esta es una respuesta mucho más útil, ya que el resultado es adecuado para componer comandos más grandes sin extraer la ruta de un montón de resultados.
Adam Tolley
2
La raíz predeterminada en el sistema operativo Windows es C: \ Users \ YOUR_USER_NAME \ AppData \ Roaming \ npm \ node_modules
Vincent Tang
2
Para MacOS Mojave 10.14.5 también es/usr/local/lib/node_modules
Jim Aho
89

Para módulos instalados globalmente:

Las otras respuestas le dan respuestas específicas de la plataforma, pero una genérica es esta:

Cuando instala el módulo global con npm install -g something, npm busca una variable de configuración prefixpara saber dónde instalar el módulo.

Puede obtener ese valor ejecutando npm config get prefix

Para mostrar todos los módulos globales disponibles en esa carpeta, use npm ls -g --depth 0( depth 0para no mostrar sus dependencias).

Si desea cambiar la ruta de los módulos globales, use npm config edity coloque prefix = /my/npm/global/modules/prefixel archivo o use npm config set prefix /my/npm/global/modules/prefix.

Cuando utiliza algunas herramientas como nodist , cambian la ruta de instalación predeterminada de la plataforma de los módulos npm globales.

jakub.g
fuente
2
Respondió a mi pregunta de seguimiento: "¿Alguien puede decirme cómo puedo cambiar la ubicación de los módulos Node.js?" Nota: La razón por la cual esto fue importante para mí fue para no tener que cambiar mi RUTA una vez más. Descomenté la sugerencia predeterminada en el archivo npmrc que se abre {npm config get prefx}.
HeyZiko, el
"Cuando usa algunas herramientas como nodist, cambian la ruta de instalación predeterminada de la plataforma de los módulos npm globales". +1
Jim Aho
65

En Windows solía npm list -gdescubrirlo. Por defecto, mis paquetes (globales) se estaban instalando en C:\Users\[Username]\AppData\Roaming\npm.

Pantanoso
fuente
99
Solo para su información: este es el% appdata% \ npm del usuario ejecutor
Felix
19

Si está buscando el ejecutable que instaló npm, tal vez porque desea ponerlo en su RUTA, simplemente puede hacerlo

npm bin

o

npm bin -g
Ken Goodridge
fuente
Si ha instalado globalmente paquetes npm donde el nodo se instaló con homebrew y luego npm se actualizó con npm, es posible que obtenga command not founderrores. Si es así, agregue lo anterior a su RUTA: export PATH=$PATH:$(npm bin -g)voila
jacob
18

En versiones anteriores de los módulos NPM siempre se colocaban en / usr / local / lib / node o donde se especificaba la raíz npm dentro del archivo .npmrc. Sin embargo, en NPM 1.0+ los módulos están instalados en dos lugares. Puede tener módulos instalados localmente para su aplicación en /.node_modules o puede tenerlos instalados globalmente, que utilizarán lo anterior.

Se puede encontrar más información en https://github.com/isaacs/npm/blob/master/doc/install.md

Nick Campbell
fuente
44
Algo a tener en cuenta: con los módulos 1.0 se almacenan en / usr / local / lib / node_modules.
Nick Campbell
@EricSmith tu enlace también está roto
nicolimo86
16

No es una respuesta directa pero puede ayudar ...

El npm también tiene una carpeta de caché, que se puede encontrar ejecutando npm config get cache( %AppData%/npm-cacheen Windows).

Los módulos npm se descargan primero aquí y luego se copian en la carpeta global npm ( %AppData%/Roaming/npmen Windows) o en la carpeta específica del proyecto ( your-project/node_modules).

Entonces, si desea realizar un seguimiento de los paquetes npm, y de alguna manera, la lista de todos los paquetes npm descargados (si no se limpia el caché npm) eche un vistazo a esta carpeta. La estructura de carpetas es como{cache}/{name}/{version}

Esto puede ayudar también https://docs.npmjs.com/cli/cache

Alireza Fattahi
fuente
14

Si el módulo se instaló con el -gindicador global ( ), puede obtener la ubicación principal ejecutando el siguiente comando

npm get prefix

o

npm ls -g --depth=0

que imprimirá la ubicación junto con la lista de módulos instalados

Salud :-)

Mohanraj Balasubramaniam
fuente
13

La forma más fácil sería hacer

npm list -g

para enumerar el paquete y ver su ubicación instalada.

Había instalado npm a través de chololatey, por lo que la ubicación es

C: \ MyProgramData \ chocolatey \ lib \ nodejs.commandline.0.10.31 \ tools \ node_modules

C: \ MyProgramData \ es la ubicación del repositorio de chocolate.

Tharaka
fuente
12

Para obtener una lista compacta sin dependencias simplemente use

npm list -g --depth 0
Adam Bubela
fuente
6

Puede encontrar módulos instalados globalmente por el comando

npm list -g

Le proporcionará la ubicación donde se han instalado los módulos node.js.

C:\Users\[Username]\AppData\Roaming\npm

Si instala módulos node.js localmente en una carpeta, puede escribir el siguiente comando para ver la ubicación.

npm list
Abdul Alim Shakir
fuente
4

De los documentos :

En npm 1.0, hay dos formas de instalar cosas:

  • globalmente: esto {prefix}/lib/node_modulescoloca los módulos y coloca los archivos ejecutables {prefix}/bin, donde {prefix}generalmente es algo así /usr/local. También instala páginas de manual {prefix}/share/man, si se proporcionan.

  • localmente: esto instala su paquete en el directorio de trabajo actual. Los módulos de nodo entran ./node_modules, los ejecutables entran ./node_modules/.bin/y las páginas man no están instaladas.

Usted puede conseguir su {prefix}con npm config get prefix. (Útil cuando instaló el nodo con nvm).

Edelans
fuente
3

De los documentos :

Los paquetes se colocan en la carpeta node_modules debajo del prefijo. Al instalar localmente, esto significa que puede requerir ("nombre de paquete") para cargar su módulo principal, o requerir ("nombre de paquete / lib / ruta / a / sub / módulo") para cargar otros módulos.

Las instalaciones globales en sistemas Unix van a {prefijo} / lib / node_modules. Las instalaciones globales en Windows van a {prefix} / node_modules (es decir, no hay carpeta lib).

Los paquetes con ámbito se instalan de la misma manera, excepto que se agrupan en una subcarpeta de la carpeta node_modules relevante con el nombre de ese prefijo de alcance por el símbolo @, por ejemplo, npm install @ myorg / package colocaría el paquete en {prefijo} / node_modules / @ myorg / package. Ver alcance para más detalles.

Si desea solicitar () un paquete, instálelo localmente.

Puedes conseguir tu {prefix}connpm config get prefix. (Útil cuando instaló el nodo con nvm).

Leer sobre localmente .
Lea acerca de todo el mundo .

Randall Flagg
fuente
3

En Ubuntu 14.04 se instalan en

/usr/lib/node_modules

Ashutosh Singh
fuente
3

Estaba empezando a volverme loco buscando la configuración real, así que aquí está la lista completa de archivos de configuración en Linux:

  • / etc / npmrc
  • /home/youruser/.npmrc
  • /root/.npmrc

en Windows: - c / Program \ Files / nodejs / node_modules / npm / npmrc

Luego en el archivo se configura el prefijo:

prefix=/usr

El prefijo está predeterminado en / usr en linux, a $ {APPDATA} \ npm en windows

Los módulos de nodo están bajo el árbol de prefijo $, y la ruta debe contener $ prefix / bin

Puede haber un problema:

  • Cuando instala globalmente, usa "sudo su", ¡entonces /root/.npmrcpuede usarse!
  • Cuando usa localmente sin sudo: para su usuario es el /home/youruser/.npmrc.
  • Cuando tu camino no representa tu prefijo
  • Cuando lo usa npm set -g prefix /usrestablece / etc / npmrc global, pero no anula el local

Aquí está toda la información que faltaba para encontrar dónde está configurado. Espero haber sido exhaustivo.

pdem
fuente
2

Como dicen las otras respuestas, la mejor manera es hacerlo

npm list -g

Sin embargo, si tiene una gran cantidad de npm paquetes instalados, la salida de este comando puede ser muy larga y una gran molestia al desplazarse hacia arriba (a veces ni siquiera es posible desplazarse tan atrás).

En este caso, canalice la salida al moreprograma, así

npm list -g | more
Raphi
fuente
2

Windows 10 : cuando ejecuténpm prefix -g, noté que la ubicación de instalación estaba dentro de la ruta del shell git que solía instalar. Incluso cuando esa ubicación se agregó a la ruta, el comando del paquete instalado globalmente no sería reconocido. Arreglado por:

  1. corriendo npm config edit
  2. cambiando el prefijo a 'C: \ Users \ username \ AppData \ Roaming \ npm'
  3. agregando esa ruta a la variable de ruta del sistema
  4. reinstalar el paquete con -g.
Marc Sloth Eastman
fuente
2

Ampliando otras respuestas:

npm list -g

le mostrará la ubicación de los paquetes instalados globalmente.

Si desea enviar esa lista a un archivo que luego puede buscar fácilmente en su editor de texto:

npm list -g > ~/Desktop/npmfiles.txt

TWLATL
fuente
1

Por cierto, npm buscará node_modules en las carpetas principales (hasta muy raíz) si no puede encontrarlo en local.

Vitaliy Markitanov
fuente
1

Si está intentando acceder a su directorio global desde el código, puede retroceder desde process.execPath. Por ejemplo, para buscar wsproxy, que está dentro {NODE_GLOBAL_DIR}/bin/wsproxy, puede simplemente:

path.join(path.dirname(process.execPath), 'wsproxy')

También hay cómo funciona el npmcli @ ec9fcc1/lib/npm.js#L254 con:

path.resolve(process.execPath, '..', '..')

Ver también ec9fcc1/lib/install.js#L521 :

var globalPackage = path.resolve(npm.globalPrefix,
                                 'lib', 'node_modules', moduleName(pkg))

Donde globalPrefixtiene un conjunto predeterminado en ec9fcc1/lib/config/defaults.js#L92-L105 de:

if (process.env.PREFIX) {
    globalPrefix = process.env.PREFIX
} else if (process.platform === 'win32') {
    // c:\node\node.exe --> prefix=c:\node\
    globalPrefix = path.dirname(process.execPath)
} else {
    // /usr/local/bin/node --> prefix=/usr/local
    globalPrefix = path.dirname(path.dirname(process.execPath))

    // destdir only is respected on Unix
    if (process.env.DESTDIR) {
        globalPrefix = path.join(process.env.DESTDIR, globalPrefix)
    }
}
A
fuente
¿Cómo debería funcionar esto? Por ejemplo, el binario Node está en /usr/bin/node, pero obviamente (ya que este es el bin) los módulos no están allí; en cambio están en /usr/lib/node_modules.
Florian Rappl
Actualizado con referencia a la npmimplementación
AT
Ahora esta es una historia diferente; traes la plataforma (buena) y las variables env respectivas (a pesar de no mencionar qué funciones importantes están haciendo, como moduleName, pero supongo que el lector promedio podrá inferir). Gracias por la modificación / corrección!
Florian Rappl
1

Si tiene instalado Visual Studio, encontrará que viene con su propia copia del nodo separada de la que está en la ruta cuando instaló el nodo usted mismo: el mío está en C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Microsoft \ VisualStudio \ NodeJs.

Si ejecuta el comando npm desde este directorio, descubrirá qué módulos de nodo están instalados dentro de Visual Studio.

Andy
fuente
0

Windows 7, 8 y 10 -% USERPROFILE% \ AppData \ Roaming \ npm \ node_modules.

Nota: Si está en algún lugar del tipo de carpeta cd ..hasta que esté en el C:directorio. Luego, escribe cd %USERPROFILE%\AppData\Roaming\npm\node_modules. Y, mágicamente %USERPROFILE%cambiará a Users\YourUserProfile\. Solo quería aclarar las ideas mencionadas Deckoen la primera respuesta. npm list -genumerará todos los bits que instaló globalmente. Si usted necesita encontrar su proyecto relacionado npm packagea continuación cd 'your angular project xyz', vuelva a ejecutar npm list. Mostrará la lista de módulos en npm package. También le dará una lista de los dependenciesdesaparecidos, y es posible que deba ejecutar ese proyecto de manera efectiva.

surendrapanday
fuente