Dove installa i pacchetti npm?


977

Qualcuno può dirmi dove posso trovare i moduli Node.js, che ho installato usando npm?


3
su Linux mint è$HOME/.npm-global/lib/node_modules
Synxmax,

9
Solo così tutti sanno, l'installazione senza -gl'opzione verrà installato un modulo a voi directory di lavoro ad esempio, se si effettua una directory dire ~/Desktop/tmpallora cd ~/Desktop/tmppoi si fa npm install appiumallora non lssi vedrà node_modules package-lock.jsonperché è stato installato un modulo nodo appiumalla tua working directory... super confusa, perché -gdovrebbe essere essenzialmente il defaultma non lo è.
the_prole

2
@the_prole - grazie, è stato incredibilmente utile .
Fattie,

Risposte:


1142

Biblioteche globali

È possibile eseguire npm list -gper vedere quali librerie globali sono installate e dove si trovano. Utilizzare npm list -g | head -1per output troncato che mostra solo il percorso. Se vuoi visualizzare solo i pacchetti principali, non i suoi sotto-pacchetti che si installano insieme ad esso - puoi usare - npm list --depth=0che mostrerà tutti i pacchetti e per ottenere solo i pacchetti installati a livello globale, basta aggiungere -g ie npm list -g --depth=0.

Sui sistemi Unix sono normalmente collocati /usr/local/lib/nodeo /usr/local/lib/node_modulesinstallati a livello globale. Se si imposta la NODE_PATHvariabile di ambiente su questo percorso, i moduli possono essere trovati per nodo.

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

Biblioteche non globali

Le librerie non globali sono installate nella node_modulessottocartella nella cartella in cui ci si trova attualmente.

È possibile eseguire npm listper visualizzare le librerie non globali installate per la posizione corrente.

Quando si installa, utilizzare l'opzione -g per l'installazione a livello globale

npm install -g pm2- pm2 verrà installato a livello globale. In genere verrà quindi trovato in /usr/local/lib/node_modules(Utilizzare npm root -gper verificare dove.)

npm install pm2- pm2 verrà installato localmente. In genere verrà quindi trovato nella directory locale in/node_modules


26
Se stai usando nvm, i tuoi moduli globali potrebbero trovarsi in una delle varie posizioni a seconda della versione del nodo che stai utilizzando in quel momento. Il modo migliore è usare npm list -gcome suggerito in un'altra risposta.
non programmabile

73
non funziona per me, mostra solo la cartella bin. "npm root -g" funziona.
Whitneyland,

7
sotto Arch Linux, i moduli globali sono sotto / usr / lib. "npm --help" mostra la posizione esatta come ultima riga dell'output, ad esempio: npm@3.6.0 / usr / lib / node_modules / npm
Gregor

20
per windows 10, collocato in%USERPROFILE%\AppData\Roaming\npm\node_modules
Nirmal Goswami il

11
"npm root -g" è corretto - la lista potrebbe funzionare ma contiene troppe informazioni, dove l'altro comando ti dà esattamente la posizione che stai cercando. stackoverflow.com/a/24295332/174965
Adam Tolley,

581

Il comando npm rootti dirà l'effettiva directory di installazione dei tuoi pacchetti npm.

Se la directory di lavoro corrente è un pacchetto nodo o una sottodirectory di un pacchetto nodo, npm rootindicherà la directory di installazione locale. npm root -gmostrerà la radice dell'installazione globale indipendentemente dalla directory di lavoro corrente.

Esempio:

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

Vedi la documentazione


1
+1 su questa risposta (almeno in Linux Mint 17 Qianna e npm 3.9.5). La mia node_modulescartella globale è in /usr/local/lib/node_modules. Quando lo faccio cioè sudo npm uninstall browserify -g(supponendo di averlo fatto sudo npm install browserify -gprima) lo rimuove da lì.
nik_m

10
Questa è una risposta molto più utile, poiché l'output è adatto per comporre comandi più grandi senza estrarre il percorso da un gruppo di output.
Adam Tolley,

2
La radice predefinita nel sistema operativo Windows è C: \ Users \ YOUR_USER_NAME \ AppData \ Roaming \ npm \ node_modules
Vincent Tang

2
Per MacOS Mojave 10.14.5 è anche/usr/local/lib/node_modules
Jim Aho il

89

Per i moduli installati a livello globale:

Le altre risposte forniscono risposte specifiche per la piattaforma, ma una generica è questa:

Quando si installa il modulo globale con npm install -g something, npm cerca una variabile di configurazione prefixper sapere dove installare il modulo.

Puoi ottenere quel valore eseguendo npm config get prefix

Per visualizzare tutti i moduli globali disponibili in quella cartella usare npm ls -g --depth 0( depth 0per non visualizzare le loro dipendenze).

Se si desidera modificare il percorso dei moduli globali, utilizzare npm config edite inserire prefix = /my/npm/global/modules/prefixil file o utilizzare npm config set prefix /my/npm/global/modules/prefix.

Quando si utilizzano alcuni strumenti come nodist , cambiano il percorso di installazione predefinito della piattaforma dei moduli npm globali.


2
Hai risposto alla mia domanda di follow-up: "Qualcuno può dirmi come posso cambiare la posizione dei moduli Node.js?" Nota: il motivo per cui questo è stato importante per me è stato che non ho dovuto cambiare ancora il mio PERCORSO. Ho decommentato il suggerimento predefinito nel file npmrc che si apre {npm config get prefx}.
HeyZiko,

"Quando si utilizzano alcuni strumenti come nodist, cambiano il percorso di installazione predefinito della piattaforma dei moduli npm globali." +1
Jim Aho,

65

Su Windows l'ho npm list -gscoperto. Di default i miei pacchetti (globali) venivano installati su C:\Users\[Username]\AppData\Roaming\npm.


9
Cordiali saluti - Questo è l'utente% appdata% \ npm dell'utente in esecuzione
Felix

19

Se stai cercando il file eseguibile che npm ha installato, forse perché ti piacerebbe inserirlo nel tuo PERCORSO, puoi semplicemente farlo

npm bin

o

npm bin -g

Se hai installato pacchetti npm a livello globale in cui il nodo è stato installato con homebrew e quindi npm aggiornato con npm stesso, potresti ricevere command not founderrori. Se è così, aggiungi l'aboveto al tuo PERCORSO: export PATH=$PATH:$(npm bin -g)voilà
jacob,

18

Nelle versioni precedenti di NPM i moduli erano sempre collocati in / usr / local / lib / node o ovunque fosse specificata la radice npm nel file .npmrc. Tuttavia, in NPM 1.0+ i moduli sono installati in due punti. Puoi avere moduli installati localmente nella tua applicazione in /.node_modules oppure puoi averli installati a livello globale che utilizzerà quanto sopra.

Ulteriori informazioni sono disponibili all'indirizzo https://github.com/isaacs/npm/blob/master/doc/install.md


4
Qualcosa da notare - con i moduli 1.0 sono memorizzati in / usr / local / lib / node_modules.
Nick Campbell,

@EricSmith anche il tuo link è rotto
nicolimo86

16

Risposta non diretta ma può aiutare ....

L'npm ha anche una cartella cache, che può essere trovata eseguendo npm config get cache( %AppData%/npm-cachesu Windows).

I moduli npm vengono prima scaricati qui e quindi copiati nella cartella globale npm ( %AppData%/Roaming/npmsu Windows) o nella cartella specifica del progetto ( your-project/node_modules).

Quindi, se si desidera tenere traccia dei pacchetti npm e in qualche modo, l'elenco di tutti i pacchetti npm scaricati (se la cache npm non viene pulita) dare un'occhiata a questa cartella. La struttura delle cartelle è come{cache}/{name}/{version}

Questo può aiutare anche https://docs.npmjs.com/cli/cache


14

Se il modulo è stato installato con -gflag global ( ), è possibile ottenere la posizione principale eseguendo il comando seguente

npm get prefix

o

npm ls -g --depth=0

che stamperà la posizione insieme all'elenco dei moduli installati

Saluti :-)


13

Il modo più semplice sarebbe fare

lista npm -g

per elencare il pacchetto e visualizzare la posizione installata.

Avevo installato npm tramite chololatey, quindi la posizione è

C: \ MyProgramData \ cioccolatoso \ lib \ nodejs.commandline.0.10.31 \ Tools \ node_modules

C: \ MyProgramData \ è la posizione repo cioccolata.


12

Per ottenere un elenco compatto senza dipendenze, utilizzare semplicemente

npm list -g --depth 0

6

Puoi trovare i moduli installati a livello globale con il comando

npm list -g

Ti fornirà la posizione in cui sono stati installati i moduli node.js.

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

Se installi i moduli node.js localmente in una cartella, puoi digitare il seguente comando per vedere la posizione.

npm list

4

Dai documenti :

In npm 1.0, ci sono due modi per installare cose:

  • globalmente —- Questo {prefix}/lib/node_moduleslascia cadere i moduli e inserisce i file eseguibili {prefix}/bin, dove di {prefix}solito è qualcosa di simile /usr/local. Installa anche le pagine man {prefix}/share/man, se fornite.

  • localmente: questo installa il pacchetto nella directory di lavoro corrente. I moduli del nodo entrano ./node_modules, gli eseguibili entrano ./node_modules/.bin/e le pagine man non sono affatto installate.

È possibile ottenere la vostra {prefix}con npm config get prefix. (Utile quando hai installato il nodo con nvm).


3

Dai documenti :

I pacchetti vengono rilasciati nella cartella node_modules sotto il prefisso. Quando si installa localmente, ciò significa che è possibile richiedere ("nomepacchetto") per caricare il suo modulo principale o richiedere ("nomepacchetto / lib / percorso / a / sub / modulo") per caricare altri moduli.

Le installazioni globali su sistemi Unix vanno a {prefix} / lib / node_modules. Le installazioni globali su Windows vanno a {prefisso} / node_modules (ovvero nessuna cartella lib.)

I pacchetti con ambito vengono installati allo stesso modo, tranne per il fatto che sono raggruppati in una sottocartella della relativa cartella node_modules con il nome di quel prefisso ambito con il simbolo @, ad esempio npm install @ myorg / package posizionerebbe il pacchetto in {prefisso} / node_modules / @ MyOrg / package. Vedi ambito per maggiori dettagli.

Se desideri richiedere () un pacchetto, installalo localmente.

È possibile ottenere la vostra {prefix}con npm config get prefix. (Utile quando hai installato il nodo con nvm).

Leggi a livello locale .
Leggi a livello globale .



3

Stavo iniziando a impazzire cercando la configurazione reale, quindi ecco l'elenco completo dei file di configurazione su Linux:

  • / Etc / npmrc
  • /home/youruser/.npmrc
  • /root/.npmrc

su windows: - c / Program \ Files / nodejs / node_modules / npm / npmrc

Quindi nel file è configurato il prefisso:

prefix=/usr

Il prefisso è predefinito / usr in linux, a $ {APPDATA} \ npm in Windows

I moduli del nodo sono sotto l'albero di $ prefix e il percorso dovrebbe contenere $ prefix / bin

Potrebbe esserci un problema:

  • Quando si installa a livello globale, si utilizza "sudo su", quindi /root/.npmrcpuò essere utilizzato!
  • Quando usi localmente senza sudo: per il tuo utente è il /home/youruser/.npmrc.
  • Quando il tuo percorso non rappresenta il tuo prefisso
  • Quando lo usi npm set -g prefix /usrimposta / etc / npmrc globale, ma non sovrascrive il locale

Ecco tutte le informazioni che mancavano per trovare ciò che è configurato dove. Spero di essere stato esaustivo.


2

Come dicono le altre risposte, il modo migliore è fare

npm list -g

Tuttavia, se hai un gran numero di npm pacchetti installati, l'output di questo comando potrebbe essere molto lungo e una grande difficoltà a scorrere verso l'alto (a volte non è nemmeno possibile scorrere così indietro).

In questo caso, reindirizza al moreprogramma, in questo modo

npm list -g | more

2

Windows 10 : quando ho eseguitonpm prefix -g, ho notato che il percorso di installazione era all'interno del percorso della shell git che avevo usato per installare. Anche quando quel percorso veniva aggiunto al percorso, il comando dal pacchetto installato globalmente non veniva riconosciuto. Risolto da:

  1. in esecuzione npm config edit
  2. cambiando il prefisso in 'C: \ Users \ nomeutente \ AppData \ Roaming \ npm'
  3. aggiungendo quel percorso alla variabile del percorso di sistema
  4. reinstallare il pacchetto con -g.

2

Espandere su altre risposte -

npm list -g

ti mostrerà la posizione dei pacchetti installati a livello globale.

Se si desidera eseguire l'output di tale elenco in un file che è possibile cercare facilmente nell'editor di testo:

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


1

A proposito, npm cercherà node_modules nelle cartelle principali (fino alla radice) se non riescono a trovarle in locale.


1

Se stai provando ad accedere alla tua directory globale dal codice, puoi tornare indietro da process.execPath. Ad esempio, per trovare wsproxy, che è dentro {NODE_GLOBAL_DIR}/bin/wsproxy, puoi semplicemente:

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

C'è anche come funziona il npmcli @ ec9fcc1/lib/npm.js#L254 con:

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

Vedi anche ec9fcc1/lib/install.js#L521 :

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

Dove globalPrefixè impostato un valore predefinito in ec9fcc1/lib/config/defaults.js#L92-L105 di:

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)
    }
}

Come dovrebbe funzionare? Ad esempio il binario Node è a /usr/bin/node, ma ovviamente (poiché questo è il bin) i moduli non ci sono; invece sono a /usr/lib/node_modules.
Florian Rappl,

Aggiornato con riferimento npmall'implementazione
AT

Ora questa è una storia diversa; porti la piattaforma (buona) e le rispettive variabili env (nonostante non menzioni quali funzioni importanti come moduleName stanno facendo, ma immagino che il lettore medio sarà in grado di inferire). Grazie per la modifica / correzione!
Florian Rappl,

1

Se hai installato Visual Studio, troverai che viene fornito con una propria copia del nodo separata da quella che si trova sul percorso quando hai installato il nodo da solo - Il mio è in C: \ Programmi (x86) \ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Microsoft \ VisualStudio \ NodeJs.

Se esegui il comando npm da questa directory, scoprirai quali moduli di nodo sono installati in Visual Studio.


0

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

Nota: se ci si trova da qualche parte nel tipo di cartella cd ..fino a quando non ci si trova nella C:directory. Quindi digitare cd %USERPROFILE%\AppData\Roaming\npm\node_modules. E, magicamente %USERPROFILE%, cambierà in Users\YourUserProfile\. Volevo solo chiarire le idee citate Deckonella prima risposta. npm list -gelencherà tutti i bit installati a livello globale. Se hai bisogno di trovare il progetto legato npm packagepoi cd 'your angular project xyz', quindi eseguire npm list. Mostrerà l'elenco dei moduli in npm package. Ti fornirà anche un elenco dei dependenciesdispersi e potresti dover eseguire efficacemente quel progetto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.