2016-04-19 7 views
0

Ich möchte npm aktualisieren, aber es scheint, als ob ich 2 Versionen habe und ich bin mir nicht sicher, wie man es am besten lösen, so dass ich nur eins habe.Npm auf der alten Version fest, aber scheinen mehrere Versionen zu haben

Mein Hauptproblem ist gerade ich habe einige ältere Yeoman Generatoren in
/Users/me/.npm-packages/lib/node_modules/,
aber neuere gegangen in /Users/me/.npm-global/lib/node_modules/

Als ich yo laufen, es ist nur die älteren Generatoren zu finden.

Ich möchte alle meine global installierten Pakete an einem Ort unter einem Benutzer haben, und ich möchte nicht sudo Sachen, die ich nicht brauchen sollte.

Es scheint, wie ich Knoten in /Users/me/.npm-packages/bin/npm haben und vielleicht auch /usr/local/bin/npm. Ich bin zu beiden Verzeichnissen gegangen und in beiden aktualisiert npm, aber es gibt immer noch 2.11.2 statt 3.8.6, die es angeblich installiert hat. hier einige CLIing ich getan habe, zu beheben, um zu versuchen:

➜ ~ which npm 
/Users/me/.npm-packages/bin/npm 
➜ ~ sudo which npm 
/Users/me/.npm-packages/bin/npm 
➜ ~ npm install [email protected] 
[email protected] node_modules/npm 
➜ ~ npm -v 
2.11.2 
➜ ~ npm install -g [email protected] 
npm ERR! Darwin 15.3.0 
npm ERR! argv "/usr/local/bin/node" "/Users/me/.npm-packages/bin/npm" "install" "-g" "[email protected]" 
npm ERR! node v5.10.1 
npm ERR! npm v2.11.2 
npm ERR! path /usr/local/lib/node_modules/npm 
npm ERR! code EACCES 
npm ERR! errno -13 
npm ERR! syscall rmdir 

..etc 
➜ ~ sudo npm install -g [email protected] 
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js 
[email protected] /usr/local/lib/node_modules/npm 
➜ ~ npm -v 
2.11.2 

Ich habe auch versucht NVM und die Installation der neuesten Version von NPM in der es, wie beschrieben, here

Mein .zshrc hat PATH-Variable zu installieren:

NPM_PACKAGES=/Users/me/.npm-packages 
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH" 
PATH="$NPM_PACKAGES/bin:$PATH" 

Wollen aktuelle Knoten verwenden und auch zu standardisieren, wo meine Pakete sind, und würde in Ordnung sein, alles weg bläst, damit es richtig funktioniert. Hoffentlich ist dies leicht zu diagnostizieren für jemanden, der mehr über dieses Zeug als ich weiß.

+0

Würden Sie sich mit Ihrer globalen Installation wohler fühlen? Müssen beide Versionen installiert sein? – pandres95

+0

Ich wollte nie wirklich 2 globale Versionen installiert haben. Die Hauptsache ist, dass ich sicherstellen möchte, dass es mir gehört und nicht root .. oder was auch immer nötig ist, also muss ich nicht "sudo" machen, um globale Sachen zu machen. – Damon

+0

Ich sehe vielleicht, dass Sie eine global installierte Version verwenden. Das globale Paketregister ('NPM_PACKAGES'-Variable) befindet sich jedoch in Ihrem Benutzer. Die Sache ist, es unmöglich zu machen und "sudo npm i -g npm @ latest". Dann wieder aktivieren Sie Ihre lokalen 'NPM_PACKAGES' Variablen. – pandres95

Antwort

1

Run which npm. Sie werden herausfinden, npm ausführbare Datei befindet sich unter /usr/local/bin/npm. Dieser Speicherort gehört root.

jedoch Ihre globalen Pakete (das heißt, die Pakete, die Sie mit -g Option installieren), indem Sie Ihre .zshrc in Zeile 1 (ja, NPM_PACKAGES =/Users/me/NPM-Pakete) festgelegt sind in der Lage.

Um Ihre EinheimischenNPM_PACKAGES nur kommentieren Sie die entsprechenden Zeilen in Ihrer .zshrc Datei zu deaktivieren.

# NPM_PACKAGES=/Users/me/.npm-packages 
# NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH" 
# PATH="$NPM_PACKAGES/bin:$PATH" 

Dann installieren neueste (sudo erforderlich) npm Version.

npm install -g [email protected] 

Schließlich Kommentar Markierungen auf .zshrc entfernen.

NPM_PACKAGES=/Users/me/.npm-packages 
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH" 
PATH="$NPM_PACKAGES/bin:$PATH" 

Sie werden auf den neuesten npm ausführbar beenden, während der globalen Pakete in Ihrem Benutzerordner installieren, so wird es nicht verwenden sudo brauchen werden.

+0

Hm .. Ich habe diese NPM/Node-Zeilen auskommentiert, habe ein 'sudo installiert -g npm @ next' und es sagt, dass es gut installiert ist, aber danach' npm --version' ist immer noch 2.11.2. Ich brauche diese Pfade nicht in meinem Zshrc, wenn es Dinge muckt; Sie sind nur da, nachdem ich ein Setup-Handbuch gelesen habe (was mir anscheinend nicht ganz gelungen ist) – Damon

+0

Geben Sie 'which npm' ein, um herauszufinden, wo sich dieses' npm'-Setup befindet. Dann werden wir das klären. – pandres95