Каква е разликата между тилда(~) и карета(^) в package.json?

След като обнових до последните стабилни версии на node и npm, опитах да инсталирам npm moment --save. Той запазва записа в package.json с префикса caret ^. Преди това префиксът беше с тилда ~.

  1. Защо са направени тези промени в npm?
  2. Каква е разликата между тилда ~ и карета ^?
  3. Какви са предимствата им пред останалите?
Решение

Вижте Документи на NPM

~version "Приблизително еквивалентно на version" Вижте semver. ~1.2.3 ще използва версии от 1.2.3 до ^version Ще ви актуализира до следващата основна версия Вижте semver. ^2.3.4 ще използва версии до 3.0.0. Вижте коментарите по-долу.

Коментари (20)

~ поправя главните и второстепенните номера. Използва се, когато сте готови да приемете поправки на грешки в зависимостта си, но не искате потенциално несъвместими промени.

^ поправя само главния номер. Използва се, когато внимателно следите зависимостите си и сте готови бързо да промените кода си, ако минорната версия ще бъде несъвместима.

Освен това ^ не се поддържа от стари версии на npm и трябва да се използва с повишено внимание.

Така че, ^ е добро решение по подразбиране, но не е перфектно. Предлагам внимателно да изберете и конфигурирате оператора на semver, който е най-полезен за вас.

Коментари (4)