НАЯ установка зависимостей в странном рекурсивном образе

Обновить

November 2018

Просмотры

2.5k раз

8

Я использовал , npm install --devчтобы установить зависимость , перечисленную в package.jsonфайл , и кажется , что вместо того , чтобы устанавливать все пакеты в плоской структуре, он устанавливает зависимости каждый модуль внутри каталога модуля.

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

Использование команды дерева это пример того, что я получаю:

├── grunt-cli
│   └── node_modules
│       ├── findup-sync
│       │   └── node_modules
│       │       ├── glob
│       │       │   └── node_modules
│       │       │       ├── minimatch
│       │       │       │   └── node_modules
│       │       │       │       ├── lru-cache
│       │       │       │       │   └── node_modules
│       │       │       │       │       └── weak
│       │       │       │       │           └── node_modules
│       │       │       │       │               └── mocha
│       │       │       │       │                   └── node_modules
│       │       │       │       │                       ├── coffee-script
│       │       │       │       │                       │   └── node_modules
│       │       │       │       │                       │       └── jison
│       │       │       │       │                       │           └── node_modules
│       │       │       │       │                       │               └── browserify
│       │       │       │       │                       │                   └── node_modules
│       │       │       │       │                       │                       ├── browser-resolve
│       │       │       │       │                       │                       │   └── example

Любые идеи, почему это может происходить?

2 ответы

14

Не волнуйтесь, это на самом деле так, как НПМ был разработан. Вы даже можете увидеть тот же модуль несколько раз установлены (хотя, как правило, с разными версиями).

Идея заключается в том, что каждый модуле, установленный под node_modules является несколькими самодостаточной установкой этого модуля с его зависимостями и необходимыми версиями - это не зависит от модулей, установленных по всему миру.

Если вы беспокоитесь о неэффективности модулей устанавливаются несколько раз, экспериментальная НОЙ Dedupe .

2

дедупликации полезно, как говорит Джонатан Уорден. Тем не менее, попробуйте npm3 . Для простой упаковки , такие как глотком-ОНК Инсталляционный из npm3 было 20% меньше файлов, 5% меньше дискового пространства. И глубина дерева пошла от 22 до 5. Однако npm3 был 2м медленнее для меня.