Выбор ответа Middle Пакеты и зависимости обновлено
Уязвимая транзитивная зависимость
Вопрос
npm audit нашёл уязвимость в пакете, который тянет не твой код, а библиотека, у которой ещё нет новой версии. Как поставить исправленную версию транзитивной зависимости?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Задать версию в overrides (pnpm.overrides, resolutions). overrides подменяет версию пакета во всём дереве, даже если её запрашивает чужая библиотека.
Варианты ответа
- Поправить файл в
node_modulesвручную и закоммитить - Задать версию в
overrides(pnpm.overrides, resolutions)правильный ответ - Добавить пакет в
peerDependenciesнужной версии - Удалить lock-файл, чтобы версии подтянулись заново
Разбор
overrides подменяет версию пакета во всём дереве, даже если её запрашивает чужая библиотека. Это временная мера: потом стоит обновить саму библиотеку и убрать override. После подмены нужно прогнать тесты, ведь библиотека могла не рассчитывать на новую версию.
- Правки в
node_modulesпропадут при следующей установке. peerDependenciesописывают ожидания библиотеки, а не подменяют версии.- Новый lock-файл не поможет, если диапазон библиотеки не пускает исправленную версию.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.