Я устанавливал несколько пакетов узлов, и я заметил, что NPM создает кучу дубликатов.Диспетчер пакетов узлов (NPM), похоже, дает дублированные пакеты
Например, я впервые установил мангуст, который, естественно, установил связку зависимостей. Затем я установил пакет mongodb, который также пришел с bson как зависимость. Из-за перекрытия зависимостей, у меня есть следующие аномалии:
MongoDB присутствует в следующих каталогах:
/usr/local/lib/node_modules/mongodb/
/usr/local/lib/node_modules/mongoose/node_modules/mongodb/
Кроме того, BSON, зависимость от MongoDB присутствует в обоих из них:
/usr/local/lib/node_modules/mongodb/
/usr/local/lib/node_modules/mongoose/node_modules/mongodb/
Я понимаю, что это только файлы с килобайтами, но я чувствую, что это может создать много избыточности. Я мог бы получить очень сложное дерево, похожее на следующее:
/usr/local/lib/node_modules/[something1]/node_modules/[something2]/node_modules/[something3/.../.../node_modules/[somethingX]/
В этом случае указанная [зависимость] может присутствовать на уровнях X в/usr/local/lib/node_modules.
Основная проблема связана с обновлением этих модулей. Мне не трудно представить, что одновременно могут быть установлены одновременные модули разных версий.
Не было бы проще просто поместить все прямо в/usr/local/lib/node_modules /, а затем перекрестные ссылки?
Не создает ли это суетливую иерархию после того, как вы установили кучу разных модулей и начали кучу разных проектов? Есть ли способ запустить рекурсивное обновление с помощью NPM? – zcserei
Предоставление людям кодирования крошечных модулей, которые в один прекрасный день будут закончены, а не большие модули, которые будут постоянно обновляться, будет установлена только одна копия модуля. Таким образом, оказывается, что на самом деле это не так уж и много, поскольку большинство модулей узлов являются крошечными, а если нет, то они некоторое время слушают подстановку (James Halliday - http://substack.net/) и то убеждайтесь в том, чтобы принять крошечную философию тоже :) Некоторое время назад я разместил некоторые мысли по этой точной проблеме: https://gist.github.com/balupton/5308717, возможно, это поможет, мне потребовались годы, чтобы прийти к это также :) – balupton
'if [both] ... разрешить ту же [] версию ... будет устанавливать только одну копию' Почему это не так? У меня есть частный случай, когда нужно использовать только одну копию, но устанавливаются несколько копий, и это занимает очень много времени, потому что ... ну, я не уверен, почему, но каждый экземпляр занимает довольно много времени для установки! – Michael