Ответ 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.