npm install и перезапись package-lock.json Как и почему

Поведение npm install

npm install начиная с версии 5.1.0 Каждый раз пытается поставить последнюю версию каждого имеющегося пакета (смотря на допущения package.json) и, если новая версия пакета уже доступна, то:

  • эта версия устанавливается
  • а package-lock.json перезаписывается (в нем указывается именно эта новая версия)

Как вариант - можно просто указывать версии зависимостей строго (напр. 1.2.3 вместо ~1.2.3) НО: лучше использовать npm ci, о чем написано ниже.

npm ci Как установить то, что указано в package-lock.json

Чтобы получить точные версии пакетов из package-lock.json, используйте вместо npm install команду npm ci
-- для неё присутствие файла package-lock.json обязательно (ну или npm-shrinkwrap.json, если речь идёт о пакете).
Эта команда специальна предназначена в том числе и для деплоя.