Почему `npm install` добавляет / удаляет каретку (^) в / из номеров версий? - PullRequest
0 голосов
/ 08 января 2019

У меня есть проект, над которым я работаю с двумя разными ноутбуками. Иногда я добавляю дополнительные пакеты в свой проект, поэтому мне приходится использовать npm install <package-name> (duh). Когда я это делаю, я git push создаю новые файлы package.json и package-lock.json, и когда я переключаю компьютеры, мне нужно git pull эти изменения, а затем снова запускаю npm install, чтобы загрузить этот пакет на другой компьютер.

Недавно я заметил и начал заботиться о том, чтобы один ноутбук продолжал добавлять каретки (^) в начале каждого номера версии пакета. Например:

Для одного компьютера версия # пакета должна выглядеть следующим образом:

"regexpu-core": {
  "version": "1.0.0",
  "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
  "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
  "requires": {
    "regenerate": "1.4.0",
    "regjsgen": "0.2.0",
    "regjsparser": "0.1.5"
  }
},

Другие версии # набора пакетов выглядят так:

"regexpu-core": {
  "version": "1.0.0",
  "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
  "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
  "requires": {
    "regenerate": "^1.2.1",
    "regjsgen": "^0.2.0",
    "regjsparser": "^0.1.4"
  }
},

Я понимаю, что каретки (^) означают, что версия не на 100% точна, но я пытаюсь выяснить ПОЧЕМУ мои разные ноутбуки создают разные форматы для версий пакетов! Я проверил этот вопрос SO , в котором есть отличные объяснения различий между ~ и ^, но я не нашел ничего, объясняющего, почему npm иногда добавляет и иногда удаляет каретки (^) в целом. Я также посмотрел на эту проблему с npm на Github , которая рекомендовала посмотреть npm настройки конфигурации, но оба моих ноутбука имеют одинаковые настройки:

  • npm config get save = true (оба компьютера)
  • npm config get save-prefix = ^ (оба компьютера)
  • npm config get save-exact = false (оба компьютера)

На одном ноутбуке была установлена ​​npm версия 5.6.0, но я только что обновил его до 6.5.0. На другом компьютере была установлена ​​версия 6.4.1, но я также обновил ее до 6.5.0. Я попытался запустить npm install в своем проекте на обоих компьютерах, но все же я обнаружил, что один компьютер всегда удаляет ^, а другой всегда добавляет ^.

Пожалуйста, дайте мне знать, если что-то мне не хватает. Спасибо за любую помощь!

1 Ответ

0 голосов
/ 21 января 2019

После того, как вы git pull исправили package.json и package-lock.json на компьютере два, попробуйте удалить каталог node_modules перед повторной установкой пакетов .

Например:

  1. Сначала cd в каталог вашего проекта на компьютере 2.

  2. Удалите существующий каталог node_modules , выполнив: rm -rf node_modules.

  3. Затем запустите: npm install

Или вы можете объединить две вышеупомянутые команды с помощью оператора &&:

rm -rf node_modules && npm install
...