В чем смысл положить npm package-lock.json
под управлением версиями? По моему опыту, когда этот контролируемый источник файлов вызвал больше проблем и путаницы, чем повышение эффективности.
Наличие package-lock.json
под контролем источника делает серьезную головную боль каждый раз, когда разработчик, который добавил/удалил/модифицировал любые модули узлов, должен разрешать конфликты между ветвями. Особенно работает над сложными/крупными приложениями, где пакет-lock.json может длиться десятки тысяч строк. Даже просто сдувание node_modules и запуск новой npm install
могут привести к резким изменениям в блокировке пакетов.
Есть еще несколько вопросов о блокировке пакетов:
- Я делаю файл package-lock.json, созданный npm
- Npm - роль package-lock.json
- Почему npm устанавливает переписать package-lock.json?
И проблема GitHub с тонны разговора о блокировке пакетов:
Это заставляет меня думать, что по-прежнему существует распространенная неопределенность, которая нуждается в прояснении.
Согласно документам
package-lock.json
автоматически создается для любых операций, где npm изменяет либо дерево node_modules, либо package.json.
Итак, почему вы хотите поместить автоматически сгенерированный файл под контроль источника?
Вышеупомянутая проблема GitHub подробно описывает, как некоторые люди в ответ на путаницу с package-lock.json меняют свой скрипт npm install
на rm -f package-lock.json && npm install
, что также не совсем корректно.
Похоже, что package-lock.json
стремится стать источником правды для точной версии зависимостей модуля узла, но разве это не то, что делает package.json? Когда начнет окупаться мучительная боль разрешения конфликтов слияния в этом файле?