Выбор ответа Middle Пакеты и зависимости обновлено

Уязвимая транзитивная зависимость

Вопрос

npm audit нашёл уязвимость в пакете, который тянет не твой код, а библиотека, у которой ещё нет новой версии. Как поставить исправленную версию транзитивной зависимости?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Задать версию в overrides (pnpm.overrides, resolutions). overrides подменяет версию пакета во всём дереве, даже если её запрашивает чужая библиотека.

Варианты ответа

  1. Поправить файл в node_modules вручную и закоммитить
  2. Задать версию в overrides (pnpm.overrides, resolutions)правильный ответ
  3. Добавить пакет в peerDependencies нужной версии
  4. Удалить lock-файл, чтобы версии подтянулись заново

Разбор

overrides подменяет версию пакета во всём дереве, даже если её запрашивает чужая библиотека. Это временная мера: потом стоит обновить саму библиотеку и убрать override. После подмены нужно прогнать тесты, ведь библиотека могла не рассчитывать на новую версию.

  • Правки в node_modules пропадут при следующей установке.
  • peerDependencies описывают ожидания библиотеки, а не подменяют версии.
  • Новый lock-файл не поможет, если диапазон библиотеки не пускает исправленную версию.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.