Cambia la directory di installazione globale predefinita per i moduli node.js in Windows?


134

Nella mia installazione di Windows PATHinclude C:\Program Files\nodejs, dove node.exeè eseguibile . Sono in grado di lanciare nodedalla shell, oltre che npm. Vorrei installare anche nuovi eseguibili C:\Program Files\nodejs, ma sembra impossibile da raggiungere.

L'impostazione NODE_PATHe le NODE_MODULESvariabili non cambiano nulla: le cose sono ancora installate %appdata%\npmper impostazione predefinita.

Come posso modificare il percorso di installazione globale?


5
Probabilmente perché gremo vuole avere tutte le dipendenze relative a nodejs in un unico posto. Il problema è che con l'aggiornamento di nodejs perderai tutti i pacchetti installati. D'altra parte, l'inserimento di npm nella cartella% appdata% dell'utente lo rende inaccessibile agli altri utenti sullo stesso computer. Pensa di installarlo come un normale utente vs amministratore.
Volker E.,


1
Passare da% AppData% a una posizione più controllata ha molto senso per me, dato che mi sembra abbastanza% temp% -ish. (Fare lo stesso per i profili di Firefox e pochi altri). Tuttavia C:\Program Filesè pronto per i problemi di amministratore costante. ➪ Preferirei spostare do D:\my-repository\npmo simili.
Frank Nocke,

2
@WiredPrairie perché l'installazione nelle cartelle degli utenti è praticamente semplicemente stupida. Il punto centrale dell'installazione dei pacchetti "a livello globale" è che un sistema nel suo insieme può accedere a questi pacchetti.
Michael Trouw,

4
Ecco un motivo per farlo: sulla mia rete non puoi eseguire il codice dalla cartella AppData perché è così che il malware, in particolare CodeLocker, viene scaricato ed eseguito. È un ulteriore livello di protezione contro i malware. Poiché Node installa cose lì, non posso eseguire moduli di nodo senza spostare il percorso di installazione o ridurre la sicurezza sul mio sistema.
Steve Hiner,

Risposte:


81

Tutto ciò che serve è leggere la npm-foldersdocumentazione . Non voglio iniziare il mio notebook Win ora quindi non posso verificarlo, ma si dovrebbe modificare solo prefixper c:\Program Files\nodejsnel file di configurazione. Se vuoi cambiarlo globalmente per tutti gli utenti, modifica il c:\Program Files\nodejs\npmrcfile, altrimenti crea / modifica c:\Users\{username}\.npmrc.

Ma questo cambiamento avrà probabilmente alcuni effetti collaterali, quindi leggi questa discussione prima. Penso che la tua idea non sia buona.


33
Ho trovato il npmrcfile suC:\path\to\nodejs\node_modules\npm\npmrc
Volker E.

3
modificare anche il percorso della cache npm in una directory locale utilizzando npm config set cache <new cache location> --globalse si verificano problemi durante l'installazione dei moduli e la cache si trova in un'unità condivisa. Ho ricevuto questo errore, ENOENT: no such file or directoryquando la cache era in un'unità condivisa
redDevil

1
Non dimenticare di aggiornare la variabile PATH di sistema in modo che punti alla nuova cartella npm.
Hayko Koryun,

64

il tentativo di installare pacchetti globali in C:\Program Files (x86)\nodejs\mi ha dato problemi di Esegui come amministratore , perché npm stava cercando di installare in
C:\Program Files (x86)\nodejs\node_modules\

per risolvere questo problema, cambia la directory di installazione globale in C:\Users\{username}\AppData\Roaming\npm:

in C:\Users\{username}\, crea il .npmrcfile con i contenuti:

prefix = "C:\\Users\\{username}\\AppData\\Roaming\\npm"

riferimento


programma di installazione dell'ambiente nodejs x86 C:\Program Files (x86)\nodejs\su Windows 7 Ultimate N 64-bit SP1
node --version: v0.10.28
npm --version: 1.4.10


Questo è strano che stavo usando npm 2.1.6, e stava installando tutti i moduli globali in% appdata% / npm, ora che l'ho aggiornato a 2.6.1, continua a provare (e non riesce) a installare in c: \ windows \ file di programma \ .. Ti capita di sapere quando questo comportamento è cambiato?
WORMSS


sembra che avesse a che fare con un modo diverso di installare npm. Grazie per la diff però.
WORMSS

2
npm config set prefisso C: \ Users \ {username} \ AppData \ Roaming \ npm
Bernhard Döbler

62

Puoi vedere la mia risposta a questo nella mia risposta a un'altra domanda .


In Windows, il percorso di installazione globale si trova effettivamente nella directory del profilo dell'utente

  • %USERPROFILE%\AppData\Roaming\npm
  • %USERPROFILE%\AppData\Roaming\npm-cache
  • ATTENZIONE: se stai eseguendo eventi a tempo o altra automazione come utente diverso, assicurati di essere eseguito npm installcome tale utente. Alcuni moduli / utilità dovrebbero essere installati a livello globale.
  • ERRORI INSTALLATORE: Potrebbe essere necessario creare queste directory o aggiungere la ...\npmdirectory al percorso dell'utente stesso.

Per modificare la posizione "globale" per tutti gli utenti in una posizione globale condivisa più appropriata %ALLUSERSPROFILE%\(npm|npm-cache)(eseguire questa operazione come amministratore):

  • creare una [NODE_INSTALL_PATH]\etc\directory
    • questo è necessario prima di provare ad npm config --global ...agire
  • creare le posizioni globali (admin) per i moduli npm
    • C:\ProgramData\npm-cache - I moduli npm andranno qui
    • C:\ProgramData\npm - Gli script binari per i moduli installati a livello globale andranno qui
    • C:\ProgramData\npm\node_modules - i moduli installati a livello globale andranno qui
    • impostare le autorizzazioni in modo appropriato
      • amministratori: modifica
      • utenti autenticati: lettura / esecuzione
  • Impostare le impostazioni di configurazione globali (prompt dei comandi dell'amministratore)
    • npm config --global set prefix "C:\ProgramData\npm"
    • npm config --global set cache "C:\ProgramData\npm-cache"
  • Aggiungi C:\ProgramData\npmalla variabile d'ambiente Path del tuo sistema

Se vuoi invece cambiare la posizione "globale" dell'utente in %LOCALAPPDATA%\(npm|npm-cache)path:

  • Creare le directory necessarie
    • C:\Users\YOURNAME\AppData\Local\npm-cache - I moduli npm andranno qui
    • C:\Users\YOURNAME\AppData\Local\npm - Gli script binari per i moduli installati andranno qui
    • C:\Users\YOURNAME\AppData\Local\npm\node_modules - i moduli installati a livello globale andranno qui
  • Configura npm
    • npm config set prefix "C:\Users\YOURNAME\AppData\Local\npm"
    • npm config set cache "C:\Users\YOURNAME\AppData\Local\npm-cache"
  • Aggiungi il nuovo percorso npm al tuo ambiente PATH.
    • setx PATH "%PATH%;C:\Users\YOURNAME\AppData\Local\npm"

1
L'impostazione della posizione globale su C: \ ProgramData secondo il tuo suggerimento centrale sembra essere il posto migliore per questo in un ambiente Windows, ma non vedo come è possibile impostare il prefisso nel file di configurazione globale quando il prefisso viene utilizzato su trova il file di configurazione globale. Ho ottenuto lo stesso risultato modificando il file di configurazione incorporato C: \ Programmi \ nodejs \ node_modules \ npm \ npmrc ma sospetto che questa modifica possa essere sovrascritta da un aggiornamento in qualche momento.
oenpelli,

@oenpelli In questo caso "globale" è il .npmrcfile dell'utente nella directory home / profilo. Dovrebbe essere impostato per tutti gli utenti.
Tracker1

Se non ho i permessi di amministratore su Windows, come posso cambiare l'installazione globale?
liam xu

Liam, puoi modificarlo per il tuo utente tramite un .npmrcfile nella directory del tuo profilo ... comunque, ymmv a quel punto.
Tracker1

19

chocolateyBasandomi sul concetto di installazione e sull'idea suggerita da @Tracker, ciò che ha funzionato per me è stato quello di fare quanto segue e tutti gli utenti di Windows sono stati felici di lavorare con nodejse npm.

Scegliere C:\ProgramData\nodejscome directory di installazione per nodejse installare nodejscon qualsiasi utente membro del gruppo di amministratori.

Questo può essere fatto con chocolatey come: choco install nodejs.install -ia "'INSTALLDIR=C:\ProgramData\nodejs'"

Quindi creare una cartella denominata npm-cachenella directory principale della directory di installazione, che dopo avrebbe seguito C:\ProgramData\nodejs\npm-cache.

Creare una cartella chiamata etcnella directory principale della directory di installazione, che sarebbe la seguente dopo C:\ProgramData\nodejs\etc.

Imposta NODEla variabile di ambiente come C:\ProgramData\nodejs.

Imposta NODE_PATHla variabile di ambiente come C:\ProgramData\nodejs\node_modules.

Assicurarsi che %NODE%la variabile d'ambiente precedentemente creata sopra sia aggiunta (o il suo percorso) sia aggiunto alla %PATH%variabile d'ambiente.

Modifica %NODE_PATH%\npm\npmrccon il seguente contenutoprefix=C:\ProgramData\nodejs

Dal prompt dei comandi, impostare la configurazione globale in questo modo ...

npm config --global set prefix "C:\ProgramData\nodejs"

npm config --global set cache "C:\ProgramData\nodejs\npm-cache"

È importante che i passaggi sopra riportati vengano eseguiti preferibilmente in sequenza e prima di aggiornare npm ( npm -g install npm@latest) o tentare di installare qualsiasi npmmodulo.

L'esecuzione dei passaggi precedenti ci ha aiutato a eseguire nodejsl'installazione a livello di sistema, facilmente disponibile per tutti gli utenti con autorizzazioni adeguate. Ogni utente può quindi eseguire nodee npmcome richiesto.


qual è l'output di 'npm config list'. Inoltre, stai eseguendo su Windows o Linux?
Damilola

Ho provato su entrambi. npm config add prefixfunziona, ma nessuna delle variabili d'ambiente menzionate qui. Non volevo aprire un'altra domanda perché questa domanda la copre, ma le risposte no (oltre npm config).
trisi

La variabile d'ambiente NODE è essenzialmente solo per esporre i binari. È ancora necessario impostare il prefisso e la cache (se non precedentemente impostati) come indicato nella procedura.
Damilola,

Oh grazie. Ciò non era molto chiaro dalle risposte o altrove su Google. Stavo cercando le variabili di ambiente in quanto quelle sono più facili da modificare a livello di codice, ma suppongo che anche i comandi di Bash di una riga siano OK.
trisi

Questo ha funzionato magnificamente per me. Grazie per le istruzioni dettagliate!
ErnestoP,

15

È necessario utilizzare questo comando per impostare il flocation di installazione globale dei pacchetti npm

(git bash) npm config --global set prefix </path/you/want/to/use>/npm

(Cmd / git-cmd) npm config --global set prefix <drive:\path\you\want\to\use>\npm

Puoi anche prendere in considerazione la npm-cacheposizione accanto ad essa. (come in una normale installazione nodejs su Windows)

(git bash) npm config --global set cache </path/you/want/to/use>/npm-cache

(Cmd / git-cmd) npm config --global set cache <drive:\path\you\want\to\use>\npm-cache


1
Felice di aiutare. Sarebbe anche una grande idea creare uno script shel o un file batch per eseguirlo per te ogni volta che cambi il tuo ambiente. Almeno questo è quello che faccio
davejoem il

Vale anche la pena aggiungere "se ci sono spazi nel percorso. Es "C:\Program Files\blah".
taylorswiftfan

7
  • Step 1 :

    npm config ottiene il prefisso

    • Il percorso predefinito è: %USERPROFILE%\AppData\Roaming\npm
  • Fase 2 :

    npm config get cache

    • Il percorso predefinito è: %USERPROFILE%\AppData\Roaming\npm-cache
  • Passaggio 3 :

    npm config set prefisso \ npm

    • esempio npm config set prefix C:\\dev\\node\\npm
  • Step 4 :

    npm config set cache \ npm-cache

    • esempio npm config set cache C:\\dev\\node\\npm-cache

Eseguire nuovamente i passaggi 1 e 2 per verificare se i percorsi vengono aggiornati come richiesto

Questo è tutto. Ogni volta che installi pacchetti globali dovresti vederli installati all'interno di \ npm \ node_modules


Grazie la tua soluzione ha risolto il mio problema, dalle ultime 2 settimane ho cercato di risolvere il problema, in realtà il mio percorso utente di Windows aveva spazi come ABC XYZ WJS, quindi ho cambiato il percorso in una sola parola, dopo che la mia installazione di npm stava dando errori, quindi la tua soluzione mi aiuta a svuotare la cache e impostare la cache nella mia nuova posizione.
Tahir Afridi,

4

La cartella globale predefinita è C:\Users\{username}\AppData\Roaming\npm. Puoi creare (se non esiste) un .npmrcfile C:\Users\{username}\e aggiungerlo prefix = "path\\to\\yourglobalfolder". Si noti che, in Windows, il percorso deve essere separato da double back-slash.



1

In Windows, se si desidera spostare la cartella npm o nodejs nel disco C in un'altra posizione, ma si assicura comunque che nodo e npm funzionino correttamente, è possibile creare un collegamento simbolico come questo: Apri prompt dei comandi:

mklink /D "your_location_want_to_create_symlink" "location_of_node_npm_file"

Esempio:

mklink /D "C:\Users\MyUser\AppData\Roaming\npm" "D:\Nodejs Data\npm"

Ora hai creato un collegamento simbolico per la cartella npm, questo collegamento simbolico farà riferimento a D:\Nodejs Data\npmTutto funzionerà bene.


0

Ho provato la maggior parte delle risposte qui nulla sembra funzionare nel mio caso. Quindi ho cambiato la posizione Temp nelle mie variabili env in C: \ npm. Quindi ha iniziato a funzionare. Questa non è una buona idea ma una soluzione temporanea.


0

Elimina completamente la cartella del nodo dalla cartella del file di programma. Disinstallare node.js e quindi reinstallarlo. cambia Percorso della variabile d'ambiente PERCORSO. elimina il file .npmrc da C: \ utenti \ nomeutente


2
Hai documentazione o fonti a supporto della tua dichiarazione? Come scritto nello stato attuale, è difficile dire se il tuo suggerimento funziona davvero senza provarlo da solo, il che richiede tempo che potrebbe essere salvato altrimenti.
Filnor,

0

non richiede molte configurazioni, basta andare alle impostazioni di sistema avanzate, copiare il percorso in cui è stato installato il nodo e creare semplicemente una variabile di ambiente e controllare con il comando node -v nel prompt!


0

Per modificare la directory di installazione globale predefinita per i moduli node.js (npm) in Windows, è necessario correggere 2 percorsi.

Verificare innanzitutto il percorso corrente in cui vengono installati i moduli nodo, quando si tenta di installarli a livello globale utilizzando il comando seguente:

npm list -g --depth = 0

Restituirà il percorso corrente in cui i moduli di nodo stanno installando in questo momento. Esempio: D: \ vsc \ typescript

Ora visita il seguente percorso per vedere la cartella npm e npm-cache. C: \ Utenti \ nome utente (numero OR) \ AppData \ Roaming

Nella cartella Roaming dell'unità C troverai la cartella npm e npm-cache. Fai clic sulla cartella + npm + e seleziona il percorso [Basta fare clic sul percorso della barra per selezionarlo automaticamente, copiarlo].Questa è un'immagine del percorso che devi selezionare

Dopo aver copiato questo percorso, impostalo sulle variabili di ambiente, con un nome variabile Path (tutto ciò che puoi selezionare come nome). Ora hai impostato il percorso per la tua cartella npm, ora è il momento di impostare il prefisso. Vai all'interno della cartella npm e controlla se esiste la cartella node_module, se non crea una nuova cartella chiamata node_modules. Tutti i moduli globali verranno in questa cartella dopo aver completato tutti i passaggi.

Passaggio finale: vai su CMD e fai clic sul comando seguente:

npm imposta il prefisso C: \ Users \ nomeutente (numero) \ AppData \ Roaming \ npm \ node_modules

Ancora una volta questo è lo stesso percorso che abbiamo selezionato per la variabile d'ambiente, stiamo solo aggiungendo un'altra cartella nel percorso e che è node_module.

Tutto pronto .... Prova ora ... Funzionerà ..


0

Trova il percorso corrente dell'installazione del pacchetto del nodo globale seguendo il comando.

npm list -g --depth = 0

Modificare questo percorso in percorso corretto seguendo il comando.

npm imposta il prefisso C: \ Users \ nomeutente (numero) \ AppData \ Roaming \ npm \ node_modules

Ha funzionato per me. Leggi la mia risposta precedente per una migliore comprensione.

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.