Почему модули NPM не могут быть полностью плоскими, включая зависимости? - PullRequest
0 голосов
/ 15 января 2019

Итак, насколько я понимаю, NPM может иметь структуру зависимостей, такую ​​как

        APP
  /      |      \
A1.0    B1.0    C3.0
  |    /    \    |   \
C1.5 D1.27 C1.5 D1.27 A1.0

Причина, по которой он не может быть полностью плоским, состоит в том, что может быть много разных версий модуля C

Но почему мы не можем просто переименовать папки в их версии и иметь полностью плоскую структуру и использовать символические ссылки?

          APP
  /   /    |    \   \
A1.0 B1.0 C1.5 C3.0 D1.27
 ^|   |---^^|----^|--^-^
 ||-------| |----||--|
 |----------|

Как я понимаю. NPM3 / Microsoft RUSH / PNPM попытаются сгладить ситуацию, но все равно сохранят структуру подчиненных зависимостей

        APP
  /   /    \   \
A1.0 B1.0 C3.0 D1.27
  |   |
C1.5 C1.5

Здесь, поскольку модуль C уже существует, он переводит другую версию C в подчиненную зависимость от A. Но теперь у нас будет два C1.5

Я что-то упустил? Есть ли менеджер, который делает настоящие ссылки и сим-ссылки? Есть ли причина, по которой плоская структура не будет работать?

Спасибо

1 Ответ

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

На самом деле у меня тоже была эта проблема, но она случается редко, в большинстве случаев у меня плоская структура зависимостей. Я не уверен, что это ваш случай, но, возможно, это происходит, когда модуль A зависит от модуля C, а модуль C зависит от A.

...