Où npm installe-t-il les packages?

977

Quelqu'un peut-il me dire où puis-je trouver les modules Node.js que j'ai installés à l'aide npm?

trnc
la source
3
sur Linux $HOME/.npm-global/lib/node_modules
Mint
9
Juste pour que tout le monde le sache, l'installation sans -goption installera un module dans votre répertoire de travail, par exemple si vous faites un répertoire dire ~/Desktop/tmpalors cd ~/Desktop/tmppuis faites npm install appiumalors lsvous verrez node_modules package-lock.jsonparce que vous avez installé un module de noeud appiumsur votre working directory... super déroutant car -gdevrait être essentiellement le defaultmais ne l'est pas.
the_prole
2
@the_prole - merci, c'était incroyablement utile .
Fattie

Réponses:

1144

Bibliothèques mondiales

Vous pouvez exécuter npm list -gpour voir quelles bibliothèques globales sont installées et où elles se trouvent. À utiliser npm list -g | head -1pour une sortie tronquée affichant uniquement le chemin. Si vous souhaitez afficher uniquement les packages principaux et non ses sous-packages qui s'installent avec lui - vous pouvez utiliser - npm list --depth=0qui afficheront tous les packages et pour obtenir uniquement les packages installés globalement, ajoutez simplement -g ie npm list -g --depth=0.

Sur les systèmes Unix, ils sont normalement placés /usr/local/lib/nodeou /usr/local/lib/node_modulesinstallés globalement. Si vous définissez la NODE_PATHvariable d'environnement sur ce chemin, les modules peuvent être trouvés par nœud.

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

Bibliothèques non globales

Les bibliothèques non globales sont installées dans le node_modulessous-dossier du dossier dans lequel vous vous trouvez actuellement.

Vous pouvez exécuter npm listpour voir les bibliothèques non globales installées pour votre emplacement actuel.

Lors de l'installation, utilisez l'option -g pour installer globalement

npm install -g pm2- pm2 sera installé dans le monde. Il sera ensuite généralement trouvé dans /usr/local/lib/node_modules(Utilisez npm root -gpour vérifier où.)

npm install pm2- pm2 sera installé localement. Il sera ensuite généralement trouvé dans le répertoire local de/node_modules

Decko
la source
26
Si vous utilisez nvm, vos modules globaux peuvent se trouver à plusieurs endroits en fonction de la version du nœud que vous utilisez à l'époque. La meilleure façon est d'utiliser npm list -gcomme suggéré dans une autre réponse.
inscriptible
73
ne fonctionne pas pour moi, affiche uniquement le dossier bin. "npm root -g" fonctionne.
whitneyland
7
sous Arch linux, les modules globaux sont sous / usr / lib. "npm --help" affiche l'emplacement exact comme dernière ligne de la sortie, par exemple: [email protected] / usr / lib / node_modules / npm
Gregor
20
pour Windows 10, placé dans%USERPROFILE%\AppData\Roaming\npm\node_modules
Nirmal Goswami
11
"npm root -g" est correct - la liste peut fonctionner mais contient beaucoup trop d'informations, alors que l'autre commande vous donne simplement l'emplacement exact que vous recherchez. stackoverflow.com/a/24295332/174965
Adam Tolley
581

La commande npm rootvous indiquera le répertoire d'installation effectif de vos packages npm.

Si votre répertoire de travail actuel est un package de nœuds ou un sous-répertoire d'un package de nœuds, npm rootvous indiquera le répertoire d'installation local. npm root -gaffichera la racine d'installation globale quel que soit le répertoire de travail actuel.

Exemple:

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

Consultez la documentation.

Joe Hawkins
la source
1
+1 sur cette réponse (au moins sous Linux Mint 17 Qianna et npm 3.9.5). Mon node_modulesdossier global est dans /usr/local/lib/node_modules. Quand je fais c'est-à-dire sudo npm uninstall browserify -g(en supposant que je l'avais fait sudo npm install browserify -gavant), il le supprime de là.
nik_m
10
C'est une réponse beaucoup plus utile, car la sortie convient à la composition de commandes plus importantes sans extraire le chemin d'un tas de sorties.
Adam Tolley
2
La racine par défaut sur le système d'exploitation Windows est C: \ Users \ YOUR_USER_NAME \ AppData \ Roaming \ npm \ node_modules
Vincent Tang
2
Pour MacOS Mojave 10.14.5, c'est aussi/usr/local/lib/node_modules
Jim Aho
89

Pour les modules installés à l'échelle mondiale:

Les autres réponses vous donnent des réponses spécifiques à la plate-forme, mais une réponse générique est la suivante:

Lorsque vous installez le module global avec npm install -g something, npm recherche une variable de configuration prefixpour savoir où installer le module.

Vous pouvez obtenir cette valeur en exécutant npm config get prefix

Pour afficher tous les modules globaux disponibles dans ce dossier, utilisez npm ls -g --depth 0( depth 0pour ne pas afficher leurs dépendances).

Si vous souhaitez modifier le chemin global des modules, utilisez npm config editet placez prefix = /my/npm/global/modules/prefixle fichier ou utilisez npm config set prefix /my/npm/global/modules/prefix.

Lorsque vous utilisez certains outils comme nodist , ils modifient le chemin d'installation par défaut de la plate-forme des modules npm globaux.

jakub.g
la source
2
Vous avez répondu à ma question de suivi: "Quelqu'un peut-il me dire comment je peux changer l'emplacement des modules Node.js?" Remarque: La raison pour laquelle cela était important pour moi était que je n'ai pas eu à changer de nouveau mon CHEMIN. J'ai décommenté la suggestion par défaut dans le fichier npmrc que {npm config get prefx} s'ouvre.
HeyZiko
"Lorsque vous utilisez certains outils comme nodist, ils modifient le chemin d'installation par défaut de la plate-forme des modules npm globaux." +1
Jim Aho
65

Sur les fenêtres, je npm list -gle découvrais. Par défaut, mes packages (globaux) étaient installés sur C:\Users\[Username]\AppData\Roaming\npm.

9swampy
la source
9
Juste pour info - Ceci est le% appdata% \ npm de l'utilisateur exécutant
Felix
19

Si vous recherchez l'exécutable installé par npm, peut-être parce que vous souhaitez le mettre dans votre PATH, vous pouvez simplement le faire

npm bin

ou

npm bin -g
Ken Goodridge
la source
Si vous avez installé globalement des packages npm où node a été installé avec homebrew puis npm mis à jour avec npm lui-même, vous pouvez avoir des command not founderreurs. Si oui, ajoutez ce qui précède à votre CHEMIN: export PATH=$PATH:$(npm bin -g)voila
jacob
18

Dans les versions antérieures des modules NPM étaient toujours placés dans / usr / local / lib / node ou partout où vous avez spécifié la racine npm dans le fichier .npmrc. Cependant, dans NPM 1.0+, les modules sont installés à deux endroits. Vous pouvez avoir des modules installés localement sur votre application dans /.node_modules ou vous pouvez les faire installer globalement qui utilisera ce qui précède.

Plus d'informations peuvent être trouvées à https://github.com/isaacs/npm/blob/master/doc/install.md

Nick Campbell
la source
4
Quelque chose à noter - avec les modules 1.0 sont stockés dans / usr / local / lib / node_modules.
Nick Campbell
@EricSmith, votre lien est également rompu
nicolimo86
16

Pas de réponse directe mais peut aider ...

Le npm possède également un dossier de cache, qui peut être trouvé en exécutant npm config get cache( %AppData%/npm-cachesous Windows).

Les modules npm sont d'abord téléchargés ici, puis copiés dans le dossier global npm ( %AppData%/Roaming/npmsous Windows) ou dans un dossier spécifique au projet ( your-project/node_modules).

Donc, si vous voulez suivre les packages npm, et comment, la liste de tous les packages npm téléchargés (si le cache npm n'est pas nettoyé) consultez ce dossier. La structure des dossiers est la suivante:{cache}/{name}/{version}

Cela peut également aider https://docs.npmjs.com/cli/cache

Alireza Fattahi
la source
14

Si le module a été installé avec l' -gindicateur global ( ), vous pouvez obtenir l'emplacement parent en exécutant la commande suivante

npm get prefix

ou

npm ls -g --depth=0

qui imprimera l'emplacement avec la liste des modules installés

À votre santé :-)

Mohanraj Balasubramaniam
la source
13

Le plus simple serait de faire

liste npm -g

pour répertorier le package et afficher son emplacement d'installation.

J'avais installé npm via chololatey, donc l'emplacement est

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

C: \ MyProgramData \ est un emplacement de dépôt chocolaté.

Tharaka
la source
12

Pour obtenir une liste compacte sans dépendances, utilisez simplement

npm list -g --depth 0
Adam Bubela
la source
6

Vous pouvez trouver des modules installés globalement par la commande

npm list -g

Il vous fournira l'emplacement où les modules node.js ont été installés.

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

Si vous installez les modules node.js localement dans un dossier, vous pouvez taper la commande suivante pour voir l'emplacement.

npm list
Abdul Alim Shakir
la source
4

De la documentation :

Dans npm 1.0, il y a deux façons d'installer des choses:

  • globalement - Cela dépose les modules {prefix}/lib/node_moduleset place les fichiers exécutables {prefix}/bin, où se {prefix}trouve généralement quelque chose comme /usr/local. Il installe également les pages de manuel dans {prefix}/share/man, si elles sont fournies.

  • localement: cela installe votre package dans le répertoire de travail actuel. Les modules de nœuds entrent ./node_modules, les exécutables entrent ./node_modules/.bin/et les pages de manuel ne sont pas installées du tout.

Vous pouvez obtenir {prefix}avec npm config get prefix. (Utile lorsque vous avez installé le nœud avec nvm).

edelans
la source
3

De la documentation :

Les packages sont déposés dans le dossier node_modules sous le préfixe. Lors d'une installation locale, cela signifie que vous pouvez exiger ("nom_package") pour charger son module principal, ou exiger ("nom_package / lib / path / to / sub / module") pour charger d'autres modules.

Les installations globales sur les systèmes Unix vont dans {prefix} / lib / node_modules. Les installations globales sur Windows vont dans {prefix} / node_modules (c'est-à-dire, aucun dossier lib.)

Les packages étendus sont installés de la même manière, sauf qu'ils sont regroupés dans un sous-dossier du dossier node_modules correspondant avec le nom de ce préfixe de portée par le symbole @, par exemple npm install @ myorg / package placerait le package dans {prefix} / node_modules / @ myorg / package. Voir la portée pour plus de détails.

Si vous souhaitez exiger () un package, installez-le localement.

Vous pouvez obtenir {prefix}avec npm config get prefix. (Utile lorsque vous avez installé le nœud avec nvm).

Lisez sur localement .
Lisez sur globalement .

Randall Flagg
la source
3

Dans Ubuntu 14.04, ils sont installés à

/usr/lib/node_modules

Ashutosh Singh
la source
3

Je commençais à devenir fou en cherchant la vraie configuration, alors voici la liste complète des fichiers de configuration sur Linux:

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

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

Puis dans le fichier le préfixe est configuré:

prefix=/usr

Le préfixe est par défaut / usr sous linux, à $ {APPDATA} \ npm dans windows

Les modules de nœuds sont sous $ prefix tree, et le chemin doit contenir $ prefix / bin

Il peut y avoir un problème:

  • Lorsque vous installez globalement, vous utilisez "sudo su" puis le /root/.npmrcpeut être utilisé!
  • Lorsque vous utilisez localement sans sudo: pour votre utilisateur, c'est le /home/youruser/.npmrc.
  • Lorsque votre chemin ne représente pas votre préfixe
  • Lorsque vous l'utilisez, npm set -g prefix /usril définit le / etc / npmrc global, mais ne remplace pas le local

Voici toutes les informations qui manquaient pour trouver ce qui est configuré où. J'espère avoir été exhaustif.

pdem
la source
2

Comme le disent les autres réponses, la meilleure façon est de faire

npm list -g

Cependant, si vous avez un grand nombre de npmpackages installés, la sortie de cette commande peut être très longue et difficile à faire défiler vers le haut (il n'est parfois même pas possible de faire défiler aussi loin en arrière).

Dans ce cas, dirigez la sortie vers le moreprogramme, comme ceci

npm list -g | more
Raphi
la source
2

Windows 10 : lorsque j'ai courunpm prefix -g, j'ai remarqué que l'emplacement d'installation se trouvait à l'intérieur du chemin du shell git que j'avais l'habitude d'installer. Même lorsque cet emplacement a été ajouté au chemin d'accès, la commande du package installé globalement n'est pas reconnue. Fixé par:

  1. fonctionnement npm config edit
  2. changer le préfixe en 'C: \ Users \ username \ AppData \ Roaming \ npm'
  3. ajouter ce chemin à la variable de chemin d'accès système
  4. réinstaller le package avec -g.
Marc Sloth Eastman
la source
2

Développer d'autres réponses -

npm list -g

vous montrera l'emplacement des packages installés globalement.

Si vous souhaitez exporter cette liste dans un fichier que vous pouvez ensuite rechercher facilement dans votre éditeur de texte:

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

TWLATL
la source
1

Btw, npm recherchera node_modules dans les dossiers parents (jusqu'à très root) s'il ne peut pas trouver en local.

Vitaliy Markitanov
la source
1

Si vous essayez d'accéder à votre répertoire global à partir du code, vous pouvez revenir en arrière à partir de process.execPath. Par exemple, pour rechercher wsproxyce qui se trouve dans {NODE_GLOBAL_DIR}/bin/wsproxy, vous pouvez simplement:

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

Il y a aussi comment fonctionne le npmcli @ ec9fcc1/lib/npm.js#L254 avec:

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

Voir aussi ec9fcc1/lib/install.js#L521 :

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

globalPrefixa un ensemble par défaut dans 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)
    }
}
À
la source
Comment cela devrait-il fonctionner? Par exemple, le binaire Node est à /usr/bin/node, mais évidemment (puisque c'est le bac) les modules ne sont pas là; ils en sont au contraire /usr/lib/node_modules.
Florian Rappl
Mis à jour en référence à la npmmise en œuvre
AT
Maintenant, c'est une autre histoire; vous apportez la plate-forme (bonne) et les variables env respectives (en dépit de ne pas mentionner quelles fonctions importantes telles que moduleName font, mais je suppose que le lecteur moyen pourra en déduire). Merci pour la modification / correction!
Florian Rappl
1

Si vous avez installé Visual Studio, vous constaterez qu'il est livré avec sa propre copie du nœud distinct de celui qui se trouve sur le chemin lorsque vous avez installé le nœud vous-même - Le mien est dans C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Microsoft \ VisualStudio \ NodeJs.

Si vous exécutez la commande npm à partir de ce répertoire, vous découvrirez quels modules de nœuds sont installés dans Visual Studio.

Andy
la source
0

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

Remarque: Si vous êtes quelque part dans le type de dossier cd ..jusqu'à ce que vous soyez dans le C:répertoire. Tapez ensuite cd %USERPROFILE%\AppData\Roaming\npm\node_modules. Et, par magie, %USERPROFILE%se transformera en Users\YourUserProfile\. Je voulais juste clarifier les idées évoquées par la Deckopremière réponse. npm list -grépertorie tous les bits que vous avez installés globalement. Si vous avez besoin de trouver votre projet lié npm packagepuis cd 'your angular project xyz', puis exécutez npm list. Il affichera la liste des modules dans npm package. Il vous donnera également la liste des éléments dependenciesmanquants et vous devrez peut-être exécuter efficacement ce projet.

surendrapanday
la source