2012-12-25 18 views
17

quando ho eseguito:npm installare il modulo nella directory corrente

npm install my-app 

L'applicazione viene installata in node_modules/my-app/...

Ho anche provato

npm install -g my-app 

Ma questo non funziona neanche.

Come posso installare il modulo direttamente nella directory corrente?

+1

http: // StackOverflow. it/questions/14742553/npm-local-install-package-to-custom-location # answer-14867050 risponde alla tua domanda – Savaratkar

risposta

30

npm install installa pacchetti sia locally or globally:

  • Localmente: npm cerca una cartella esistente denominata node_modules nella directory corrente e crea una cartella per ogni pacchetto si installa in quella cartella. Se non è in grado di trovare qui una cartella node_modules esistente, esamina quindi gli antenati della directory corrente finché non ne trova una. Se non riesce a trovarne uno, ne crea uno nella directory corrente.
  • Globalmente: se si utilizza l'opzione -g (globale), il pacchetto è installato in una posizione globale. Questa posizione varia per distribuzione Linux, ma /usr/local/lib/node_modules/packagename è un esempio. CentOS7 utilizza /usr/lib/node_modules/packagename.

Si dovrebbe utilizzare solo -g quando il pacchetto è qualcosa che ci si vuole usare come un comando.

Proprio come come variabili globali sono piuttosto disgustoso, ma anche necessario in alcuni casi, pacchetti globali sono importanti, ma meglio evitare se non necessario.

In generale, la regola è:

  1. Se si sta installando qualcosa che si desidera utilizzare nel programma, utilizzando require('whatever'), quindi installare localmente, alla radice del vostro progetto .
  2. Se si sta installando qualcosa che si desidera utilizzare nella vostra shell, sulla riga di comando o qualcosa, installarlo a livello globale, in modo che i suoi binari finiscono nella variabile PATH ambiente.

npm non installerà i file di un pacchetto direttamente nella directory corrente.

Tuttavia, questa è effettivamente una buona cosa. Mantiene i file delle dipendenze separati dalla tua app e Node automatically searches the node_modules folder when you require something.

+24

Il tuo primo proiettile è solo leggermente vero. Se non c'è nessuna cartella './Node_modules /' nella directory corrente, npm cercherà le directory degli antenati fino a quando non ne troverà una con 'node_modules /' al suo interno. Se ne trova uno, diciamo nella directory grandparent, quindi 'npm install packagename' installa' packagename' in '../../ node_modules /'. Tuttavia, se ricerca la struttura dei file fino a quando non raggiunge la radice e non trova ancora alcuna cartella 'node_modules /', allora sei corretto, npm genererà automaticamente quella cartella nella directory corrente e installerà il pacchetto lì. – chharvey

+2

Grazie. Stava facendo la directory degli antenati per me, ho appena creato una cartella localmente e voilà. – Antoine

+0

Grazie! Quella cartella principale che attraversava era il mio problema. – Fr0sT

4

È necessario disporre di un package.json nella directory corrente.

quindi scrivere npm install <module_name> --save-dev o npm install <module_name> --save e verrà installato nella directory node_modules

15

Come @dalu Detto questo, se si vuole avere i pacchetti locali, avrete bisogno di un file package.json.

Ma per creare il file package.json, è necessario inizializzare npm eseguendo npm init.

È quindi possibile utilizzare npm install <module_name> --save[-dev].

+1

Sono contento di aver letto la "seconda" risposta migliore. Grazie per la condivisione! –

3

Credo che la vera domanda, quello che io e il PO vorrebbe, è quello di installare il mio-app, come si farebbe installare un'applicazione, cioè installare un'applicazione di livello superiore, che mi accingo "uso" per come un'applicazione e non "richiedere" come modulo.

Il fatto che npm installa un livello inferiore rispetto alla directory dell'applicazione , è un'obiezione puramente estetica da parte di nuovi utenti di npm.

Quando ho iniziato ad usare NPM (non molto tempo fa), ho risolto da avere un progetto Git come installatore, clonare il git, eseguire lo script di installazione, ma ora mi sono abituato e non è così mi dà fastidio avere l'app nella cartella "sbagliata" di più.

Basta impostare alcuni .sh, .bat o scorciatoie nel posto giusto e gli utenti, non si accorgono.

4

Questo è come è possibile installare un modulo per la directory corrente:

npm i --prefix ./ my-app

Come altri hanno detto, il modo corretto è quello di configurare il progetto tramite package.json

+0

la soluzione più semplice! –

Problemi correlati