Czy wiesz, jak zarządzać wersjami w package.json?

package.json
jest plikiem, który opisuje każdy projekt oparty o Node.js. Jedną z jego najważniejszych ról jest przechowywanie informacji o zależnościach projektu.
Wersję zależności można wskazać na kilka sposobów używając do tego operatorów - ten wpis przybliża ich znaczenie. Większość operatorów jest przydatna, jeżeli zależna paczka stosuje semantyczne wersjonowanie (major.minor.patch).
Operatory >=
, >
, =
, <
, <=
, ||
>=1.6.7
oznacza wersje od 1.6.7 w górę,>=1.6.7 <2.0.0
wersje od 1.6.7 do 2.0.0, bez 2.0.0,<=2.0.0
wersje do 2.0.0, włącznie z 2.0.0,1.1.1 || >=1.1.3 <2.0.0
1.1.1, większa od 1.1.3 do 2.0.0, gdy 1.1.2 powodowała problemy i chcemy ją pominąć.
Operator -
1.6.7 - 2.0.0
, to samo co>=1.6.7 <=2.0.0
(czyli, od X do Y włącznie),1 - 2.0.0
, to samo co>=1.0.0 <=2.0.0
(pierwsza wersja zakresu uzupełniana jest zerami),1 - 2
, to samo co>=1.0.0 <3.0.0
(druga wersja w zakresie, wszystko poza wersją “major” może ulec zmianie).
Operator *
lub x
1.*
, to samo co>=1.0.0 <2.0.0
,1.2.x
, to samo co>=1.2.0 <1.3.0
.
Operator ~
Umożliwia zmianę wersji “patch”, gdy ustawiona jest na wersji “minor” lub zmianę wersji “major”, gdy ustawiona na “major”
~1.6.7
oznacza to samo co>=1.6.7 <1.7.0
,~1.6
jest tym samym co>=1.6.7 <1.7.0
, to samo co1.6.*
(pozwala na zmianę wersji “patch”),~1
jest tożsame z>=1.0.0 <2.0.0
, oraz1.*
(pozwala na zmianę wersji “minor”),~1.2.3-beta.10
, to samo co>=1.2.3-beta.10 <2.0.0
, ale np:1.2.3-beta.11
wpadnie do zakresu, natomiast1.2.4-beta.1
już nie.
Operator ^
Umożliwia zmianę tylko pierwszej niezerowej wersji. Zmiana pierwszej niezerowej wersji często uznawana jest za “breaking-change”, ^
nas przed tym chroni.
^1.2.3
jest tym samym co>=1.2.3 <2.0.0
oraz1.*
,^0.2.3
oznacza to samo co>=0.2.3 <0.3.0
, i to samo co0.*
,^0.0.3
, to samo co>=0.0.3 <0.0.4
, oraz to samo co0.0.*
.
💡 "Czy wiesz, że?" to wewnątrzfirmowa inicjatywa, której celem jest szerzenie ciekawostek
z różnych obszarów IT. Najlepsze z nich trafiają na bloga dla szerszego grona odbiorców.