2012-06-11 10 views
17

Voglio installare i pacchetti localmente, ma npm installa sempre i pacchetti nella posizione globale. Sto eseguendo il comando seguente:npm non installerà i pacchetti localmente. Cosa c'è che non va?

npm install serialport 

Non ho un comando .npmrc e non sto utilizzando il flag -g, quindi non so perché non è l'installazione in locale. Ecco uno snippet dal dump di configurazione che mostra che global è falso: $ npm config ls -l | grep globale globale = false globalconfig = "/ usr/local/etc/npmrc" globalignorefile = "/ usr/local/etc/npmignore"

E i pacchetti sono ancora in fase di installazione come questo

[email protected] ../../../../node_modules/serialport 

Quindi, a meno che non mi sbagli completamente su cosa significa "locale", questo sembra sbagliato. Avevo l'impressione che "locale" significasse nella directory di lavoro corrente in modo che potessi fare un "require" nel mio file di codice principale. Vedi: http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/ come riferito in una precedente domanda relativa a npm.

Qualcuno può darmi qualche suggerimento su questo? Grazie mille.

P.S. Non è specifico per il modulo serialport. Sta succedendo con tutti loro.

risposta

29

maggior parte della mia risposta può essere trovata: http://npmjs.org/doc/folders.html#More-Information

Quello che ho capito è che NPM cercherà di installarlo in una posizione ragionevole. Quindi, se si dispone di una directory project/node_modules e si è in/project e si installa npm, verrà utilizzato product/node_modules.

Ora se accidentalmente hai fatto un cd project/css e fai l'installazione di npm, allora npm attraverserà fino a trovare la tua directory node_modules. Questo per impedirti di installarlo accidentalmente nel tuo project/css.

Quindi nel tuo caso hai una directory node_module da qualche parte nel percorso del tuo progetto. Quindi la mia ipotesi è che è possibile risolvere il problema eliminando quella directory o creando manualmente una directory node_modules nella cartella del progetto.

+0

Sì, ho appena scoperto che io e cercato di rispondere alla mia domanda, ma i nuovi utenti non possono farlo fino a 8 ore più tardi. Ecco cosa ho trovato che lo ha spiegato. http://stackoverflow.com/questions/6514621/npm-install-locally – user1449536

+0

Nessun problema, in realtà non ero sicuro al 100% fino a quando non ho trovato quella pagina di documentazione. – Pickels

+0

La tua risposta è quasi corretta, ma questa cartella è chiamata node_module ** s ** – idmean

5

Se si ha un file package.json nella cartella in cui si sta tentando di installare il pacchetto, verrà creata correttamente la cartella node_modules.

package.json base

{ 
    "name": "application-name", 
    "version": "0.0.1" 
} 
Problemi correlati