Jak mogę zmienić wersję npm za pomocą NVM?


240

Używam NVM do instalowania najnowszych wersji nodeJS do pracy z moim węzłem. Działa całkowicie dobrze do instalowania osobnych wersji i przełączania między nimi. Instaluje również najnowszą wersję NPM w każdym lokalnym folderze ... / bin wraz z plikiem binarnym węzła. Jednak wydaje się, że nie ma sposobu na zmianę wersji NPM, której używam (a przynajmniej nie mogę tego rozgryźć).

Jedyne rozwiązanie, jakie mogę sobie wyobrazić, to usunięcie pliku binarnego, w którym jest domyślnie ustawiony (tj. NPM, który został zainstalowany, kiedy pierwszy raz zainstalowałem węzeł z NVM), a na jego miejscu umieścić najnowszy plik binarny NPM. Zastanawiam się jednak, czy istnieją lepsze sposoby na zrobienie tego.


1
Dlaczego chcesz zmienić wersję NPM, to nie tak, że zainstalujesz dowolny pakiet, który działa tylko ze starą wersją NPM. A po węźle 0.6 węzeł ma najnowszą wersję NPM. Zatem zmiana wersji węzła zmieni również wersję npm.
Farid Nouri Neshat

1
z wyjątkiem tego, że nie działa przez NVM. tak - węzeł jest dostarczany z NPM, ale to tylko oznacza, że ​​instaluje plik binarny obok niego. widzę oba pliki binarne w odpowiednich folderach, ale kiedy uruchamiam „nvm use v0.6.13”, używany plik binarny npm pozostaje tym, który został zainstalowany ze starszą wersją węzła, zamiast tego zainstalowanego z najnowszą wersją.
thisissami,

1
Oto kod dla npm: github.com/creationix/nvm/blob/master/nvm.sh#L135-148 , który nie jest potrzebny od 0.6, więc może powinieneś spróbować usunąć tę część. To powinno pomóc. Możesz także utworzyć problem na github.
Farid Nouri Neshat

Pracuję teraz nad tym problemem, doceniam wszelką pomoc - stackoverflow.com/questions/50976138/...
Alexander Mills,

Odpowiedzi:


330

EDYCJA: kilka lat od pierwszej odpowiedzi na to pytanie, jak zauważono w nowszej odpowiedzi , istnieje teraz polecenie:

nvm ma teraz polecenie aktualizacji npm. To jest nvm install-latest-npmlub nvm install --latest-npm.

nvm install-latest-npm: Próba aktualizacji do najnowszej wersji npm na bieżącej wersji węzła

nvm install --latest-npm: Po instalacji spróbuj zaktualizować do najnowszej działającej npm w danej wersji węzła

Poniżej znajdują się poprzednie wersje poprawnej odpowiedzi na to pytanie.

Po ponad trzech latach od pierwszego pytania wydaje się, że odpowiedź jest teraz znacznie prostsza. Po prostu zaktualizuj wersję, która została zainstalowana przez NVM ~/.nvm/versions/node/[your-version]/lib/node_modules/npm.

Właśnie zainstalowałem węzeł 4.2.2, który jest dostarczany z npm 2.14.7, ale chcę użyć npm 3. Więc zrobiłem:

cd ~/.nvm/versions/node/v4.2.2/lib
npm install npm

Łatwo!

I tak, powinno to działać dla każdego modułu, nie tylko npm, który ma być „globalny” dla konkretnej wersji węzła.


EDYCJA 1: W najnowszej wersji npm -gjest inteligentny i instaluje moduły na ścieżce powyżej zamiast globalnej ścieżki systemowej.


Dzięki @philraj za zwrócenie na to uwagi w komentarzu.


13
a dla tych, którzy nie wiedzą, gdzie jest ich nvm, jak ja, uruchom which npm.
Larry,

16
A jeśli chcesz wersję npm inną niż najnowsza, biegnij, npm install npm@major.minor.patchaby pobrać tę konkretną wersję, np.npm@3.10.9
Michael

2
Coś podobnego działa również w przypadku nvm-windows , np cd ~/AppData/Roaming/nvm/v5.10.1.
absynce

2
Dla każdego, kto używa nvm dla Windows, to samo można zrobić jak powyżej (uruchamiając npm install npm), ale w lokalizacjach instalacji węzła dla Windows. W Windows 10 jest to ~ / AppData / Roaming / nvm / [twoja wersja]. tj. Użytkownicy \ moja nazwa użytkownika \ AppData \ Roaming \ nvm \ v9.7.1
Sean Holmesby

3
Jeszcze łatwiej: nvm install-latest-npmjak samlandfried odpowiedział poniżej - stackoverflow.com/a/47519162/5991278
philraj

43

nvm nie obsługuje npm.

Jeśli więc chcesz zainstalować węzeł 0.4.x (od którego wciąż zależy wiele pakietów) i użyć NPM, nadal możesz użyć npm 1.0.x.

Zainstaluj węzeł 0.6.x (który jest dostarczany z npm 1.1.x) i zainstaluj nvm z npm:

npm install nvm
. ~/nvm/nvm.sh

Zainstaluj węzeł 0.4.x z nvm:

nvm install v0.4.12
nvm use v0.4.12

Zainstaluj npm za pomocą install.sh (zwróć uwagę na -Lparametry, aby śledzić wszelkie przekierowania):

curl -L https://npmjs.org/install.sh | sh

Wykryje to węzeł 0.4.12 i zainstaluje npm 1.0.106 w twoim folderze ~ / nvm / v0.4.12 / lib / node_modules i utworzy dowiązanie symboliczne dla nvm

~/nvm/v0.4.12/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js

Jeśli spróbujesz uruchomić npm, nadal będzie to dawać błąd, ale jeśli zrobisz to nvm use v0.4.12jeszcze raz, powinno działać.


3
Dzięki! Uwaga: adres URL zmienił się na: curl https://npmjs.org/install.sh | sh
tristen

7
Czy to teraz naprawdę stara odpowiedź? Mój npm jest pobierany przez nvm automatycznie jako zależność używanej wersji węzła.
Damon Smith

2
Tak. To jest stare. Jeśli nadal używasz węzła 0.4 i starego NVM, możesz zobaczyć ten problem.
fijiaaron

1
Adres URL został ponownie zmieniony, aby wymusić www. Użyj, curl -Laby postępować zgodnie z przekierowaniem.
Neal Ehardt,

32

nvm ma teraz polecenie aktualizacji npm. To jest nvm install-latest-npmlub npm install --latest-npm.


3
Czy masz link do dokumentacji tego?
allicarn 30.01.2018

1
Z nvm helpdanych wyjściowych konsoli: --latest-npm After installing, attempt to upgrade to the latest working npm on the given node versionnie znalazłem jednak odniesienia do tego w nvmdokumentacji. Udostępnij, jeśli go znajdziesz.
samlandfried

Dziękuję Ci! To naprawdę powinno być oznaczone jako poprawna odpowiedź.
philraj

jest dostępny tylko na 32 bitach
Negin Basiri,

30
npm install npm@x.x.x -g
npm install npm@5.4.0 -g

2
Chociaż pytanie dotyczy nvm, właściwie przyjechałem tu po to, dzięki. Upvoting.
Atrahasis

27

Korzystam z systemu Windows i nie mogłem uruchomić żadnego z tych elementów. Wciąż pojawiały się błędy dotyczące blokowania plików. Działa to jednak:

cd %APPDATA%\nvm\v8.10.0           # or whatever version you're using
mv npm npm-old
mv npm.cmd npm-old.cmd
cd node_modules\
mv npm npm-old
cd npm-old\bin
node npm-cli.js i -g npm@latest

cd %APPDATA%\nvm\v8.10.0 # or whatever version you're using
rm npm-old
rm npm-old.cmd
cd node_modules\
rm -rf npm-old

I bum, wróciłem do biznesu.


3
Dzięki, to działało również dla mnie w systemie Windows. (miał ten sam problem z konfliktami plików)
Venryx,

1
Pracował dla mnie dzięki. Używam nvm w systemie Windows do zarządzania węzłem i chciałem podnieść nvm po przejściu na wersję węzła. Musiałem uruchomić konsolę z podwyższonymi uprawnieniami. Mój folder nodejs ścieżki to „C: \ Program Files \ nodejs”, który jest aliasem innej lokalizacji na mojej maszynie, z której korzysta nvm do buforowania pobieranych plików (nie APPDATA), chyba wybrałem inną lokalizację podczas instalacji nvm.
Moika kończy

2
Dziękuję, prawdopodobnie muszą naprawić sposób aktualizacji npm na każdej starej wersji nodejs w oknach NVM.
rbinsztock

1
Pomogło mi to zaktualizować npm, który został dostarczony z Węzłem 10.x. Dziękuję Ci!
andypotato,

2
Pracował na oknach z nodejs v10.15.3, musiał zmienić mvsię reni rmdo deli rmdirdla mnie.
deerchao

17

Zmiana wersji npm w systemach operacyjnych opartych na Linuksie nie jest jeszcze prostym procesem jednemu poleceniu. Zrobiłem następujące, aby wrócić do starszej wersji npm. Powinno to działać, aby uruchomić dowolną wersję npm. Najpierw zainstaluj wersję npm, której chcesz użyć:

sudo npm install -g npm@X.X.X

Usuń link sym z / usr / local / bin /

sudo rm /usr/local/bin/npm

Utwórz ponownie łącze sym, używając żądanej wersji zainstalowanej npm

sudo ln -s /usr/bin/npm@X.X.X /usr/local/bin/npm

1
postępowałem zgodnie z tymi instrukcjami, próbując przejść z wersji 2.14.7 do 2.15.9, a teraz, gdy wpisuję npm -v, otrzymuję 3.8.6. Cholera.
Kyle Baker,

3
Po wypróbowaniu kilku rzeczy po prostu użycie sudo npm install -g npm@x.x.xpowoduje, że ta wersja odpowiada npm -v. W każdym razie działało to przynajmniej z wersji 4.x do 2.15.9.
Kyle Baker,

1
W moim przypadku sudo npm install -g npm@4.6.1zainstalowano tylko 4.6.1, ale nadal używano npm 5.1.0. Twoja wskazówka pomoże mi przejść na 4.6.1.
Hung Tran

8

Przeglądając stronę www.npmjs.com/install.sh odkryłem, że istnieje sposób na zainstalowanie określonej wersji poprzez ustawienie zmiennej środowiskowej

export npm_install="2.14.14"

Następnie uruchom skrypt pobierania zgodnie z opisem na stronie npmjs.com :

curl -L https://www.npmjs.com/install.sh | sh

Jeśli pominiesz ustawianie zmiennej npm_install , zainstaluje ona wersję, którą oznaczyli jako najnowszą


2
Musiałem użyć curl -L https://www.npmjs.com/install.sh | sudo sh, aaaa i ta metoda nie działała, otrzymując najnowszą wersję, mimo że wyeksportowałem wspomnianą zmienną środowiskową. Niech to szlag. Chciałem wersji 2.15.9 z 2.14.7, odpowiedź poniżej ustawiła mnie na 3.8.6, a teraz ta odpowiedź ustawia mnie na 4.0.2. WTF.
Kyle Baker,

6

W systemie Windows uruchom terminal jako administrator (w przypadku problemów z uprawnieniami, tak jak ja). Następnie użyj określonej wersji węzła (powiedzmy 7.8.0) przez

nvm use 7.8.0

następnie zaktualizuj swój NPM do żądanej konkretnej wersji przez

npm install -g npm@5.0.3


2

Niewielkie różnice w powyższych instrukcjach, działały dla mnie. (MacOS Sierra 10.12.6)

npm install -g npm@3.10.10
rm /usr/local/bin/npm
ln -s ~/.npm-packages/bin/npm /usr/local/bin/npm
npm --version


0

Miałem ten sam problem po instalacji nvm-windowsna istniejącej instalacji Węzła. Rozwiązaniem było po prostu postępować zgodnie z instrukcjami:

Powinieneś również usunąć istniejącą lokalizację instalacji npm (np. „C: \ Users \ AppData \ Roaming \ npm”), aby zamiast tego poprawnie użyć lokalizacji instalacji nvm.

Instalacja i aktualizacje


0

Instalacja i użycie NVM w systemie Windows

Poniżej znajdują się kroki instalacji NVM w systemie Windows:

NVM oznacza menedżera wersji węzłów, który pomoże przełączyć wersje węzłów do określonego zastosowania. Pozwala także na pracę z wieloma wersjami npm i węzłów.

Zainstaluj konfigurację NVM. Użyj polecenia „lista NVM”, aby sprawdzić listę zainstalowanych wersji węzłów. Wpisz „nvm użyj numeru wersji [6.9.3]”, aby przełączyć wersje. Po więcej informacji

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.