Skip to content

Некорректная сборка из-за транзитивных зависимостей #1019

@shining-mind

Description

@shining-mind

Пусть мы имеем в зависимостях express у которого в зависимостях path-to-regexp@0.1.17, и @v4fire/client с path-to-regexp@3.2.0.

При установке зависимостей получим следующую структуру модулей:

node_modules/path-to-regexp@0.1.17
node_modules/@v4fire/client/node_modules/path-to-regexp@3.2.0

Вебпак при сборке бандла включит пакет версии 0.1.17, что приведет к поломке роутера. Проблему обнаружил при сборке нового проекта.

Если порассуждать, то данный баг имеет более серьезные последствия, например у нас была некая зависимость с уязвимостью, мы её обновили до свежей версии, но этот же пакет остался уязвимым через транзитивную зависимость. При сборке есть вероятность, что в бандл попадёт именно уязвимая версия, и узнать мы это никак не можем (только вручную проверять бандл).

В качестве временного фикса могу предложить следущее решение:

Добавляем для каждого слоя дополнительный резолв в resolve.modules

[
  '/path/to/project/src',
  '/path/to/project/',
  '/path/to/project/node_modules/@v4fire/client/src',
  '/path/to/project/node_modules/@v4fire/client/node_modules', // дополнительный резолв
  '/path/to/project/node_modules/@v4fire/core/src',
  '/path/to/project/node_modules/@v4fire/core/node_modules', // дополнительный резолв
  '/path/to/project/node_modules'
]

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions