Назначение этого файла предельно ясно — зафиксировать используемые версии пакетов, дабы можно было развернуть точную копию node_modules.
И я как положено, сохраняю этот файлик в репе, вместе с исходниками.
Но уже не в первый раз наступаю на грабли.
Сегодня открыл старый проект. Он не очень старый, месяца три с последней правки прошло, я же и правил на своей тачке. Клонирую, значит, код с репы, запускаю npm install, все завртелось, скачивается, собирается, ребилдится sass, в итоге все проходит в штатном режиме, без ошибок.
Запускаю dev сервер npm start, получаю ошибку и вылет из таска (увы, не помню, какую именно). На всякий случай стираю node_modules, повторяю всё и снова ошибка.
Ладно. Удаляю node_modules, удаляю package-lock.json, ставлю, запускаю - всё работает.
Может кто знает причины такого поведения?
А вы сами lock файл храните в репе?
Сталкивался с такой же проблемой и сложилось такое впечатление (возможно ошибочное), что npm втихую кеширует сами lock-файлы и потом, если видит наличие такого файла в старом месте, то для установки зависимостей использует его закешированную версию, а уже во время запуска скриптов "обнаруживает", что версии всего не совпадают и падает со странными ошибками, которые совершенно не гуглятся. Такие ошибки не возникали на девственно-свежем ноутбуке и появились на нем спустя какое-то время. А потом я жестко почистил руками весь кеш npm и все опять заработало нормально. Может это совпадение, но уж очень подозрительное...