Мне кажется, я понимаю, как работает npm i
, используя файл package.json
с dependencies
и версиями этих библиотек. Насколько я понимаю, package-lock.json
- это результат этой сборки с указанными c версиями вниз по дереву. В будущем npm i
будет использовать версии, указанные в этом файле блокировки. Отлично!
Моя текущая проблема - когда мы удаляем файл package-lock.json
, npm i
извлекает последнюю версию библиотек, игнорирует версию, указанную в package.json
! Зачем ему это делать?
У нас есть несколько библиотек, на которых он это делал, но одна, которая нанесла ущерб havo c в наших новых сборках, это: "react-lazyload": "^2.6.2",
. Когда файл блокировки удаляется, он загружает 2.6.8
, что вносит критические изменения в наш интерфейс. Зачем npm
брать последнюю версию?
Я проверил файл блокировки, и это единственный экземпляр во всех библиотеках, который его использует, никакая другая библиотека не запрашивает новую версию.
Кстати , это, кажется, происходит только на нашем сервере Jenkins, где развернут весь наш код, который работает под той же версией Node / npm, что и наши машины разработчика:
node -v
v10.16.3
npm -v
6.9.0