Jak zaktualizować devDependencies w NPM?

155

npm updatewydaje się po prostu aktualizować pakiety w dependencies, ale co z tym devDependencies.

Teraz możesz zainstalować devDependencies, uruchamiając npm install ., ale to nie działa w przypadkunpm update .

Jakieś pomysły?

Matt
źródło
1
Właśnie wpadłem na to samo. Dziwi mnie ta asymetria między npm installa npm update. Obejrzałem to, usuwając node_moduleskatalog, a następnie uruchamiając npm installponownie, ale na pewno wydaje się, że powinien być lepszy sposób.
Joe White,
7
Otworzyłem raport o błędzie dla tego zachowania. Zobaczymy co się stanie.
Joe White,
Może to być spowodowane tym, że programiści NPM myśleli, że ludzie będą go używać npm linkdo tworzenia środowisk deweloperskich .
Julian Knight,

Odpowiedzi:

157

Aby zaktualizować pakiet package.json oprócz modułów lokalnych, uruchom

npm update --save-dev

Ewentualnie to samo polecenie, aby zaoszczędzić czas

npm update -D

Możesz wyświetlić wszystkie szczegóły aktualizacji lub dowolne polecenie w tym zakresie

npm help <cmd>
deckerdev
źródło
20
npm update -Dnie działa dla mnie, nic nie aktualizuje.
AmazingDreams,
27
Dlaczego jest to zaznaczone jako poprawna odpowiedź, gdy pytanie nie dotyczy sposobu zapisywania aktualizacji, package.jsonale raczej sposobu npm updateaktualizowania devDependencies?
Alejandro García Iglesias
@onalbi: nie. Oto wątek śledzący problem .
Dan Dascalescu
1
npm update --save-devdla mnie działa dobrze. Korzystanie z węzłów v12.11.0i npmv6.11.3
maximedupre
55

Zainstaluj npm-check-updates ( https://www.npmjs.org/package/npm-check-updates ), a następnie wskocz do folderu swojego projektu i uruchom:

npm-check-updates

Aby zaktualizować i zapisać zmiany w pliku package.json:

npm-check-updates -u
Michael Thompson
źródło
ncubyłoby lepsze niż npm-check-updatesoszczędzanie pisania.
Edric
@DimitriKopriwa jest -dopcja tylko dla devDependencies
Michael Thompson
ncu --dep dev -u; npm install
Kiruahxh,
7

Ten problem nie dotyczy już aktualnej wersji NPM (1.3.11).

Aktualizacja działa dobrze z: npm update

spieglio
źródło
1
Niestety tak nie jest. Oto wątek śledzący problem .
Dan Dascalescu
4

Jeśli używasz przestarzałej wersji npm, może to być problem. Dlatego przed wykonaniem jakichkolwiek innych poleceń:

sudo npm install npm -g

lub (jeśli powyższe nie działa):

sudo npm update npm -g

Następnie ponownie uruchom konsolę (aby zmiany odniosły skutek). Teraz możesz sprawdzić swój nowy npm --versioni czy jest aktualny wykonaj:

npm update

lub (jeśli wolisz):

npm update --save-dev
jmarceli
źródło
Niestety, to nie działa w npm 5. Oto wątek śledzący problem .
Dan Dascalescu
2

Jednym (powolnym) sposobem wymuszenia aktualizacji jest usunięcie katalogu node_modules, a następnie wykonanie tej czynności npm installponownie.

Był to znany błąd npm updatepolecenia, który został naprawiony w gałęzi programistycznej npm, patrz tutaj: https://github.com/isaacs/npm/pull/3863

Wkrótce powinien wylądować na najnowszej stabilnej wersji npm.

Rick Deckard
źródło
1
W przypadku npm> v5 musisz również usunąć, package-lock.jsonaby to zadziałało, w przeciwnym razie po prostu zainstaluje wersje wymienione w tym pliku blokady.
karfau
Poza tym to się nie zaktualizuje package.json. Oto wątek śledzący problem .
Dan Dascalescu
2

Napotkałem ten sam problem, co OP i nie znalazłem rozwiązania, więc zdecydowałem się napisać wtyczkę Grunt, która będzie automatycznie aktualizować moje devDependencies.

Jest na Githubie, chciałbym uzyskać informacje i współpracę, aby uczynić z niego najlepsze narzędzie, którego NPM nie dostarczyło.

Zasadniczo automatycznie aktualizuje przestarzałe zależności programistyczne za pomocą prostego zadania Grunt.

https://github.com/pgilad/grunt-dev-update

Gilad Peleg
źródło
2

U mnie zadziałało zainstalowanie takich indywidualnych zależności deweloperskich

npm install react-test-renderer@15.6.1 --save --only=dev
Varsha
źródło
1

Te kroki zadziałały dla mnie:

  1. npm install -g npm-check-updates
  2. ncu -u
  3. npm update
  4. npm install
Alferd Nobel
źródło