Лучший способ устранить уязвимости в package-lock.json? - PullRequest
0 голосов
/ 01 января 2019

Меня предупреждают об уязвимостях в пакетах, перечисленных в файле package-lock.json моего проекта Node.Js.

Я могу последовать совету здесь и переустановить все пакеты с npm install <package-name>, однако я также использую другие проекты npm, использующие более старые версии этих пакетов, которые не будут переустанавливатьсяс простым npm install.

Значит ли это, что мне нужно перейти на package-lock.json и вручную изменить все зависимости до последней версии?

Что, если они сломаются?

Нет ли правильного способа обновления, который гарантирует, что вы не сломаете другие пакеты, зависящие от старых версий?

1 Ответ

0 голосов
/ 01 января 2019

Если проблема связана с пакетом, от которого вы напрямую зависите, вам следует обновить его напрямую и сохранить в процессе package.json +, заблокировав его версию в package-lock.json, выполнив что-то вроде npm install your-dependency@latest --save[-dev].Но будьте осторожны: могут произойти критические изменения, которые повредят ваш код (например, в случае, если в зависимости произошла основная версия обновления между некоторыми устаревшими и критическими изменениями).

Но если проблема связана с зависимостью одногоиз ваших зависимостей, самый лучший способ решить эту проблему - поднять проблему (возможно, с помощью PR, чтобы помочь им) с сопровождающим родительского пакета, а затем, когда они предоставляют обновление, обновить саму зависимость в вашем проекте.

Вы также можете использовать npm audit для решения некоторых проблем (вероятно, не всех, и если версия зависимостей определенно требуется зависимостью, она не будет обновлять ее, потому что она может что-то сломать), ноЕдинственный лучший способ решить проблему для вас и для всех остальных - это получить сопровождающего модуля, который вы хотите обновить, для его зависимостей, когда / если они могут.

Переустановка всего не решит проблему, если зависимостьвсе еще уязвим.Установка волшебным образом не исправляет вещи, люди делают :-) Однако, что вы можете сделать, это использовать npm outdated, чтобы вывести список всех пакетов с более новыми версиями и попытаться обновить их, один за другим, и посмотреть, есть ли ваши уязвимости.разрешаются после этого (npm audit).

Еще одна вещь: обычно это плохая практика, чтобы пойти и изменить вещи вручную в package-lock.json.Этот файл должен автоматически генерироваться только одним из ваших npm install (или похожих) сценариев.Этот файл используется npm для разрешения списка точных версий зависимостей / подзависимостей при новой установке, и это действительно единственный лучший способ убедиться, что все люди, которые используют или работают в этом проекте, имеют одинаковую версию всехих зависимости, так что лучше быть правильными.Всегда совершайте свои package-lock.json!

...