Что вызывает различия в установке пакета npm

У меня возникла проблема, когда некоторые различия в моих пакетах npm между двумя машинами, используемыми для создания приложения, приводят к тому, что части моего веб-сайта ведут себя по-разному. Я пытаюсь выяснить, в чем причина разницы между пакетами, которые устанавливает npm, я убедился, что использую одни и те же версии nvm, nodejs и npm (и что одна и та же версия активна с nvm, используя npm list -g --depth=0). Я проверил, что оба имеют одинаковые глобально установленные пакеты в одинаковых версиях. Я установил номера версий в package.json, чтобы они были исправлены в соответствии с тем, что я указываю (без '^' или '~' в номерах версий). Когда я делаю npm i в проекте (даже после принудительной очистки кеша npm), я получаю различия между двумя машинами для того, что устанавливает npm:

added 1061 packages from 1024 contributors and audited 26052 packages in 121.826s
found 5 vulnerabilities (2 low, 3 moderate)


added 1110 packages from 1033 contributors and audited 17105 packages in 196.763s
found 6 vulnerabilities (2 low, 3 moderate, 1 high)

Как мне найти:

  1. В чем эти различия (кроме попытки сравнить папку node_modules)
  2. Что вызывает различия в первую очередь. Насколько я понимаю, использование npm и исправление версий не должно вызывать подобных проблем.

Вы уверены, что фиксируете файл блокировки пакета? Я видел проекты, в которых люди помещали это в свой gitignore.

Ferrybig 08.04.2019 18:00

@Ferrybig именно в этом и заключается проблема. Для всех, кто читал, что package-lock.json не обязательно должен находиться в системе контроля версий, если вы не хотите таких проблем, поместите его туда.

BlackICE 08.04.2019 18:05
npm i --loglevel verbose было полезно увидеть, что именно устанавливает npm
BlackICE 08.04.2019 18:07
Настройка шаблона Metronic с помощью Webpack и Gulp
Настройка шаблона Metronic с помощью Webpack и Gulp
Я пишу эту статью, чтобы поделиться тем, как настроить макет Metronic с помощью Sass, поскольку Metronic предоставляет так много документации, и они...
1
3
161
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если npm вызывает разные установки, убедитесь, что вы действительно фиксируете файл package-lock.json и что на всех компьютерах установлена ​​одна и та же основная версия npm.

Это становится проблемой, так как файл блокировки на самом деле содержит точные установленные версии, а разные версии потенциально могут иметь разные зависимости.

Когда этот файл блокировки был представлен, разработчики привыкли помещать этот файл в свой gitignore, поскольку это был неожиданный файл, созданный npm, и что несколько версий npm используют разные хэши в файле блокировки.

Другие вопросы по теме