Ответ
Да, package-lock.json нужно коммитить в репозиторий. Он фиксирует точные версии всех зависимостей и их подзависимостей, что гарантирует одинаковые установки пакетов у всех разработчиков и на CI/CD. Без него могут возникнуть проблемы из-за различий в версиях, даже если package.json одинаковый.
Пример:
// package-lock.json
{
"name": "project",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
"react": "18.2.0" // точная версия
}
}
}
}
Исключение — если ты работаешь над библиотекой, тогда лучше использовать npm-shrinkwrap.json.