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