С какой целью мы поддерживаем файлы package-lock.json, которые не имеют уязвимостей безопасности? Почему бы просто не удалить их или позволить им устаревать?
package-lock.json
хранит набор точных версий для всех зависимостей и транзитивных зависимостей, которые были установлены при последнем запуске npm update
. Вам предлагается совершитьpackage-lock.json
назад к вашему репо.
Единственный реальный потребитель package-lock.json
что я могу найти npm ci
, который воспроизводит состояние, определенное в package-lock.json
именно так, чтобы вы могли быть уверены, что используете CI на тех же зависимостях, которые были на машине разработчика, которая в последний раз написала package-lock.json
.
Другое дело package-lock.json
похоже, используется для создания пачки предупреждений системы безопасности. У меня есть изменения в PR-рекламе Dependabot на Github,package-lock.json
файлов и жалуясь, что мои package-lock.json
именно там он "нашел" другие уязвимости, которые не может исправить автоматически. Я подозреваю, что эти неустранимые проблемы связаны с моей или зависимойpackage.json
, вызвано требованием к максимальной версии, исключающим исправленную версию модуля-нарушителя, но Dependabot говорит не об этом:
Если package-lock.json
используется только npm ci
, как ссылка на устаревшую и уязвимую версию пакета может создать уязвимость где угодно, кроме моей системы CI? Никто, кто действительно устанавливает пакет, не будет использоватьpackage.json
разрешать зависимости и, следовательно, получать исправления для всех уязвимостей автоматически по мере их появления (если только у меня самого нет оскорбительного ограничения максимальной версии)? Действительно ли эти PR к моему репо просто предложения, которые я и все мои пользователи / соавторы запускаем?npm update
на наших машинах? Если да, то что заставило авторов Dependabot сделать это с помощью запроса на вытягивание?
Если я удалю package-lock.json
из системы управления версиями, правильно ли решит package-lock.json
-обнаруженные уязвимости (потому что файл больше не существует, чтобы заставить кого-то установить старые уязвимые версии моих зависимостей)? Или это просто сделает сканеры уязвимостей неспособными сканировать мое репо (т.е. полагаются ли они наpackage-lock.json
вместо разрешения самих зависимостей от package.json
) и заставить меня не знать, когда мне нужно npm update
?