2016-02-19 25 views
11

używam wersji 3.6.0 npm i węzeł Verison 5.6.0 na Windows 10:aktualizacja npm -g nie robi nic, chociaż mam przestarzałe pakiety

> npm version 
{ npm: '3.6.0', 
    ares: '1.10.1-DEV', 
    http_parser: '2.6.1', 
    icu: '56.1', 
    modules: '47', 
    node: '5.6.0', 
    openssl: '1.0.2f', 
    uv: '1.8.0', 
    v8: '4.6.85.31', 
    zlib: '1.2.8' } 
> 

Mam liczbę zainstalowanych na całym świecie pakietów KMP:

> npm ls -g --depth=0 
C:\Users\Klas\AppData\Roaming\npm 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
`-- [email protected] 

> 

Po uruchomieniu npm outdated -g kilka pakietów jest wymienionych jako nieaktualne.

> npm outdated -g 
Package  Current Wanted Latest Location 
jspm   0.16.25 0.16.25 0.16.29 
live-server 0.9.0 0.9.0 0.9.2 
protractor  3.0.0 3.0.0 3.1.1 
tslint   3.2.2 3.2.2 3.4.0 
webpack  1.12.11 1.12.11 1.12.13 

Kiedy biegnę npm update -g powraca (po kilku sekundach) bez jakiegokolwiek komunikatu ostrzegawczego lub błędów. Jednak żadne pakiety nie zostały zaktualizowane.

> npm update -g 
> 

Jak interpretować this issue, npm update -g powinien działać i należy zaktualizować top poziomie globalnym pakiety. Ale dla mnie to nie działa.

Jeśli biegnę (dzięki Benjamin Kaiser za cynk):

> npm update -g --loglevel verbose 

dostaję dużo mocy. To wydaje się być najważniejsze:

npm verb outdated not updating tslint because it's currently at the maximum version 
that matches its specified semver range 

Nadal nie całkiem rozumiem. Ponieważ pakiety są globalne, nie ma określonego zakresu średniego?

Uruchamianie aktualizacji na dany pakiet nie pomaga:

> npm update -g tslint 
> 

Nawet określenie wersji ma żadnej różnicy:

> npm update -g [email protected] 
> 

Ale nawet jeśli pracowali Wolałbym nie trzeba jawnie aktualizuj każdy pakiet. Dla mnie główną cechą menadżera pakietów powinno być ułatwienie aktualizacji wszystkiego na raz.

This issue dźwięki powiązane. Ale kiedy patrzę na tslint npm module, "ostatni" wydaje się być 3.4.0. Dlaczego więc nie ma aktualizacji?

+1

Czy próbowałeś dodać flagę '--loglevel verbose', aby sprawdzić, czy coś może się wydarzyć na niższym poziomie rejestru? Ze wszystkiego, co powiedziałeś, twoja wersja npm powinna być aktualna, aby uruchomić to polecenie. –

+0

Dzięki @BenjaminKaiser, przedłużyłem moje pytanie o wyniki ustawienia tej flagi –

+1

To bardzo dziwne, masz rację, że jest globalne i jako takie nie powinno mieć żadnego sembera. Może spróbuję wymazać pakiety globalne i zacząć od nowa. Może reinstalacja npm również do najnowszej wersji (3.7.4 myślę) –

Odpowiedz

10

npm -g update ma dość nieoczekiwane zachowanie. Może to być odpowiednie obejście problemu:

+0

Dzięki - jest to dobre obejście i zdecydowanie działa tak samo, jak oczekuję od 'npm -g update'. – lantrix

+0

Niezła odpowiedź! – huachengzan