Jak zainstalować poprzednią dokładną wersję pakietu NPM?


914

Użyłem NVM do pobrania węzła v0.4.10 i zainstalowałem npm do pracy z tą wersją węzła.

Próbuję zainstalować ekspresowe za pomocą

npm install express -g

i pojawia się błąd, który express wymaga wersji węzła> = 0,5.0.

Cóż, to dziwne, ponieważ postępuję zgodnie ze wskazówkami dla tutoriala node + express + mongodb , który używał węzła v0.4.10, więc zakładam, że express jest / był dostępny dla węzła v0.4.10. Jeśli moje założenie jest prawidłowe, jak mam powiedzieć programowi npm, aby pobrał wersję, która będzie działać z moją instalacją?


7
Dlaczego po prostu nie zaktualizujesz swojej wersji Węzła? Jestem pewien, że powinno być o wiele więcej dobrych dodatków niż złamane zachowanie, które znajdziesz.
Fabrício Matté

1
Czasami nie jest to opcja. Jeśli użył NVM do obniżenia wersji, może istnieć przyczyna, na przykład, że inna grupa kontroluje wersję węzła wykonywalnego, z której musi korzystać.
fool4jesus

Odpowiedzi:


1581

Jeśli musisz zainstalować starszą wersję pakietu, po prostu ją określ

npm install <package>@<version>

Na przykład: npm install express@3.0.0

Możesz także dodać --saveflagę do tego polecenia, aby dodać ją do zależności w pakiecie.json lub --save --save-exactflagi, jeśli chcesz, aby ta dokładna wersja była określona w zależnościach w pakiecie.json.

installKomenda jest udokumentowane tutaj: https://docs.npmjs.com/cli/install

Jeśli nie masz pewności, jakie wersje pakietu są dostępne, możesz użyć:

npm view <package> versions

I npm viewmoże być używany do przeglądania innych rzeczy o pakiecie. https://docs.npmjs.com/cli/view


4
Wierzę, że to zainstaluje najbliższą główną wersję, która pasuje, więc może nie być to, czego oczekujesz stackoverflow.com/a/22345808/1074400
Aakil Fernandes

2
@AakilFernandes, jeśli podasz dokładną wersję, zostanie zainstalowana dokładna wersja. Jeśli określisz zakres wersji semantycznej, możesz uzyskać niedokładne dopasowanie. Pod tym względem nie ma nic wyjątkowego w poleceniu instalacji.
Bret Copeland,

6
npm view <package> versions -jsonaby zobaczyć każdą wersję, unikając wielokropka na końcu listy z wieloma wersjami.
TheDarkIn1978

5
Jeśli użyjesz npm install express@3.0.0, nie otrzymasz dokładnej wersji 3.0.0, otrzymasz najnowszą wersję 3.xx. Aby uzyskać konkretną wersję, musisz użyć npm install express@3.0.0 --save-exact. Zobacz ten post na blogu: 60devs.com/npm-install-specific-version.html
Patrick Hund

5
@PatrickHund nie, npm install express@3.0.0dostaniesz dokładnie wersję 3.0.0. npm install express@^3.0.0dostaniesz najnowszą wersję 3.xx --save-exactwpływa na sposób, w jaki jest zapisany w pliku package.json , który już opisałem w mojej odpowiedzi. Pamiętaj też, --save-exactże należy go używać w połączeniu z jednym --savelub --save-dev- nie wystarczy użyć go samodzielnie.
Bret Copeland,

93

To całkiem proste. Po prostu napisz to, na przykład:

npm install -g npm@4.6.1

Lub:

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

1
Dzięki za tagi latesti nextwersji!
Jimmy Adaro

@inaps ty może dodać notatkę, że -gflaga jest specjalnie dla pakietów, które chcesz zainstalować globalnie, jak wielu użytkowników będzie dostać się do tej strony i po prostu kopiuj / wklej nie zdając sobie sprawy jak są one o wpływ na ich pakietów ekosystem. Wszyscy byliśmy „tym facetem”
Jacksonkr

73

Najpierw usuń starą wersję, a następnie uruchom dosłownie następujące czynności:

npm install express@3.X

i dla stabilnych lub najnowszych

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

12
Czy to dosłowny Xczy zastępczy numeryczny numer wersji?
Keith Thompson

7
To było pytanie albo /, a nie pytanie tak / nie. Próbowałem npm install express@3.Xi wydawało się, że to działa. Czy jest to funkcja lub wypadek podczas analizy npmnumeru wersji?
Keith Thompson,

3
@KeithThompson Tak, jest! Hehe, tylko żartuję ... Tak to npmanalizuje, patrz: docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-
gonz

3
@gonz: Więc to dosłownie X.
Keith Thompson

1
Chciałem tylko wyjaśnić, dlaczego to dla ciebie zadziałało. Nie znam pierwotnej intencji Saurabha ani tego, co próbujesz zrobić. 3.X oznaczałoby> = 3,0 i <4,0.
Gonz

41

Moim zdaniem jest to najłatwiejszy i najszybszy sposób:

$ npm -v

4.2.0

$ npm install -g npm@latest-3

...

$ npm -v

3.10.10


2

możesz zaktualizować pakiet npm za pomocą tego polecenia:

npm install <package_name>@<version_number>

przykład: npm install yargs@12.02


1

Mam ogólny sposób na rozwiązanie tego rodzaju problemów, które mogą być również pomocne, szczególnie podczas klonowania repozytoriów w celu uruchomienia ich lokalnie, ale wymagają nieco więcej analizy wersji.

Za pomocą pakietu npm-check-updatesweryfikuję wersje pakietów (zgodnie z plikiem package.json), które nie zostały zadeklarowane w najnowszych dostępnych wersjach, jak pokazano na rysunku ( https://www.npmjs.com/package/npm-check -aktualizacje ):

wprowadź opis zdjęcia tutaj

Dzięki tym informacjom możemy zweryfikować status aktualizacji różnych pakietów i podjąć decyzję, które pakiety zaktualizować / zdegradować, a które nie.

Zakładając, że postanowiliśmy zaktualizować wszystkie pakiety, ponieważ są na liście, możemy użyć ncu -upolecenia, które tylko modyfikuje plik package.json. Biegaćnpm install aby zaktualizować zainstalowane pakiety i pakiet-lock.json.

Następnie, w zależności od wymagań repozytorium, możemy sprecyzować, co jest potrzebne, instalując określone wersje za pomocą npm view <package> versionsi npm install <package>@<version>


1

npm install -g npm@version

w którym chcesz obniżyć wersję

npm install -g npm@3.10.10


ale czy potrzebuję go lokalnie? czy muszę umieścić --save?
AlexNikonov

Tak, ty też. Pobierze pakiet lokalnie.
Lakshay Sharma

@AlexNikonov ommit the -g(do instalacji globalnej, a następnie wyląduje w aktualnym projekcie reż /node_modules) i tak, --savelub --save-devuzyskać wpispackage.json
Frank Nocke

0

Możesz użyć następującego polecenia, aby zainstalować poprzednią wersję pakietu npm:

npm install packagename@version


-3

W systemie Ubuntu możesz wypróbować to polecenie.

sudo npm cache clean -f
sudo npm install -g n
sudo n stable 

Wersja szczegółowa: sudo n 8.11.3 zamiast sudo n stable

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.