Подтвердить что ты не робот

Что означает "^" в версии package.json?

Недавно я запустил npm install (npm 1.4.3) с флагом --save-dev, а его вкладки в пакет package.json начали с ^, например. "^2.5.0". Я никогда не видел этого раньше с более ранними версиями npm, которые я использовал, и я не могу найти документацию для этой нотации, только для обозначений, с которыми я уже знаком, например. ~, >= и т.д. Что это значит?

4b9b3361

Ответ 1

Цитата из isaacs/node-semver:

  • ^ 1.2.3: = >= 1.2.3-0 < 2.0.0-0 "Совместимость с 1.2.3". При использовании операторов каретки все, что указано в указанной версии (включая предварительную), будет поддерживаться вплоть до следующей основной версии (или ее предварительных версий). 1.5.1 будет удовлетворять ^ 1.2.3, тогда как 1.2.2 и 2.0.0-бета не будут.
  • ^ 0.1.3: = >= 0.1.3-0 < 0,2.0-0 "Совместимость с 0,1,3". Версии 0.x.x являются специальными: первый ненулевой компонент указывает на потенциально нарушение изменений, что означает, что оператор каретки соответствует любой версии с тем же первым ненулевым компонентом, начиная с указанной версии.
  • ^ 0.0.2: = = 0.0.2 "Только версия 0.0.2 считается совместимой"

Тем не менее, я бы рекомендовал использовать "~" вместо этого, потому что он имеет более интуитивную семантику, см. обсуждение в npm/npm # 4587.

Ответ 2

Из интереса, почему вы считаете, что более рискованно, чем ~? ~ означает что-либо из этой версии или выше, так, например, все мои вещи просто авторубируются до версии v4 Express и сломались на днях, потому что основные версии могут быть несовместимыми и ~ позволяет это. Если бы я использовал ^ 3.x вместо ~ 3.x, это не вызвало бы у меня никаких проблем, весь мой код остался бы на последней версии 3.x и проигнорировал предварительную отправку 4.x.