Zainstalowałem kilka pakietów węzłów i zauważyłem, że NPM tworzy grupę duplikatów.Wydaje się, że menedżer pakietów (NPM) wydaje zduplikowane pakiety.
Na przykład najpierw zainstalowałem mangustę, która oczywiście zainstalowała mnóstwo zależności. Następnie zainstalowałem pakiet mongodb, który również był wyposażony w bess jako zależność. Ze względu na nakładające się zależnościami, mam następujące nieprawidłowości:
MongoDB jest obecny w następujących katalogach:
/usr/local/lib/node_modules/mongodb/
/usr/local/lib/node_modules/mongoose/node_modules/mongodb/
Również bson, zależność od MongoDB jest obecny w obu z nich:
/usr/local/lib/node_modules/mongodb/
/usr/local/lib/node_modules/mongoose/node_modules/mongodb/
Zdaję sobie sprawę, że są to jedynie pliki kilobajtów, ale czuję się jak to może stworzyć wiele końca redundancji mógłbym skończyć z bardzo złożonego drzewa podobny do następującego:
/usr/local/lib/node_modules/[something1]/node_modules/[something2]/node_modules/[something3/.../.../node_modules/[somethingX]/
W tym scenariuszu określona [zależność] może występować na poziomach X w/usr/local/lib/node_modules.
Moja główna troska dotyczy aktualizacji tych modułów. Nie jest mi trudno wyobrazić sobie jednoczesne instalowanie modułów współbieżnych różnych wersji.
Czy nie byłoby łatwiej umieścić wszystko bezpośrednio w katalogu/usr/local/lib/node_modules /, a następnie powiązać zależności?
Czy to nie tworzy gorączkowej hierarchii po zainstalowaniu kilku różnych modułów i rozpoczęciu wielu różnych projektów? Czy istnieje sposób na przeprowadzenie aktualizacji cyklicznej za pomocą NPM? – zcserei
Zapewniając ludziom kodowanie małych modułów, które pewnego dnia zostaną ukończone, zamiast dużych modułów, które zawsze będą się aktualizować, zostanie zainstalowana tylko jedna kopia modułu. Tak więc okazuje się, że nie jest to tak duży problem w rzeczywistości, ponieważ większość modułów węzła jest malutka, a jeśli nie, to przez jakiś czas słuchają gry zastępczej (James Halliday - http://substack.net/), oraz następnie przekonaj się do przyjęcia drobnej filozofii :) Jakiś czas temu zamieściłem kilka myśli na ten dokładny problem tutaj: https://gist.github.com/balupton/5308717 może to pomoże, zajęło mi wieki, aby przyjść do to również :) – balupton
'jeśli [oba] ... pozwalają na tę samą wersję [] ... zainstalują tylko jedną kopię' Dlaczego to nie robi? Mam konkretny przypadek, w którym należy użyć tylko jednej kopii, ale kilka kopii jest instalowanych, a to zajmuje naprawdę dużo czasu, ponieważ ... nie jestem pewien dlaczego, ale każda instancja trwa dość długo, aby zainstalować! – Michael