pacchetto di installazione locale npm in posizione personalizzata

È ansible specificare una destinazione del pacchetto personalizzato per npm install , tramite un flag di comando o una variabile di ambiente?

Per impostazione predefinita, le installazioni locali di npm terminano in node_modules all’interno della directory corrente, ma voglio installarlo in node_modules all’interno di una directory diversa, ad esempio vendor/node_modules . Come posso farlo accadere?

TL; DR

Puoi farlo usando il flag --prefix e il flag --global *.

 [email protected]:~/foo $ npm install bower -g --prefix ./vendor/node_modules [email protected] /Users/pje/foo/vendor/node_modules/bower 

* Anche se questa è un’installazione “globale”, i bin installati non saranno accessibili attraverso la riga di comando a meno che ~/foo/vendor/node_modules esista in PATH .

TL; R

Ogni attributo configurabile di npm può essere impostato in uno qualsiasi dei sei diversi punti. In ordine di priorità:

  • Flag della riga di comando: --prefix ./vendor/node_modules
  • Variabili d’ambiente: NPM_CONFIG_PREFIX=./vendor/node_modules
  • File di configurazione utente: $HOME/.npmrc o userconfig param
  • File di configurazione globale: $PREFIX/etc/npmrc o userconfig param
  • File di configurazione integrato: path/to/npm/itself/npmrc
  • Configurazione predefinita: node_modules / npmconf / config-defs.js

Per impostazione predefinita, i pacchetti installati localmente vanno in ./node_modules . quelli globali vanno nella variabile di configurazione prefix ( /usr/local per impostazione predefinita).

È ansible eseguire la npm config list per vedere la configurazione attuale e la npm config edit per cambiarla.

PS

In generale, la documentazione di npm è davvero utile. La sezione delle cartelle è una buona panoramica strutturale di npm e la sezione di configurazione risponde a questa domanda.

Se vuoi questo in config, puoi impostare npm config in questo modo:

 npm config set prefix "$(pwd)/vendor/node_modules" 

o

 npm config set prefix "$HOME/vendor/node_modules" 

Controlla la tua configurazione con

npm config ls -l

O come dice @pje e usa il flag --prefix

Per OSX, puoi andare su $HOME dell’utente (probabilmente / Utenti / tuo nome /) e, se non esiste già, creare un file .npmrc (un file che npm usa per la configurazione dell’utente) e creare una directory per i tuoi pacchetti npm da installare (ad esempio, / Users / yourname / npm). Nel file .npmrc, imposta “prefisso” nella nuova directory npm, che sarà dove verranno installati i pacchetti npm “globalmente”; questi pacchetti “globali” saranno ovviamente disponibili solo per il tuo account utente.

In .npmrc:

prefix=${HOME}/npm

Quindi esegui questo comando dalla riga di comando:

npm config ls -l

Dovrebbe fornire l’output sia sulla configurazione locale che sulla configurazione globale di npm, e dovresti vedere la configurazione del tuo prefisso locale riflessa, probabilmente in cima alla lunga lista di output.

Per sicurezza, raccomando questo approccio per configurare il comportamento npm del tuo account utente rispetto a chowning delle tue cartelle /usr/local , che ho visto consigliato altrove.

Dopo aver cercato questo da solo volendo che diversi progetti con dipendenze condivise fossero DRYer, ho trovato:

  • Installare localmente è il modo Node per qualsiasi cosa tu voglia usare via require()
  • L’installazione globale è per i binari che vuoi sul tuo percorso, ma non è inteso per nulla tramite require()
  • Utilizzando un prefisso si intende aggiungere i percorsi bin e man appropriati a $PATH
  • npm link ( informazioni ) consente di utilizzare un’installazione locale come fonte per i globali

→ attenersi al modo Nodo e installare localmente

ref:

  • Riassunto perfetto da isaacs
  • FAQ npm: “node_modules” è il nome dell’arcivescovile della mia divinità, e una Parola Proibita nella mia religione. Posso configurare npm per utilizzare una cartella diversa? 😉

Ad esempio, su Windows 7, è ansible utilizzare il seguente insieme di comandi / operazioni.

Crea una variabile di ambiente personale, sono obbligatori i doppi backslash:

  • Nome variabile: %NPM_HOME%
  • Valore variabile: C:\\SomeFolder\\SubFolder\\

Ora, imposta i valori di configurazione nelle nuove cartelle (nomi di file esemplificativi):

  • Imposta la cartella npm

npm config set prefix "%NPM_HOME%\\npm"

  • Imposta la cartella npm-cache

npm config set cache "%NPM_HOME%\\npm-cache"

  • Imposta la cartella temporanea npm

npm config set tmp "%NPM_HOME%\\temp"

Facoltativamente, puoi eliminare il contenuto delle cartelle originali prima che la configurazione venga modificata.

  • Elimina la cache npm cache clear -cache npm cache clear

  • Elenca i moduli npm -g ls

  • Elimina i moduli npm -g rm name_of_package1 name_of_package2 nome_di_package1 npm -g rm name_of_package1 name_of_package2