Jak wyświetlić drzewo zależności danego modułu npm?


143

Jak mogę uzyskać drzewo modułu dostępnego dla npm, ale nie zainstalowanego lokalnie?

npm llwykonuje zadanie dla pakietów zainstalowanych lokalnie. Ale to nie działa w przypadku modułów niezainstalowanych lub modułów zainstalowanych globalnie.

Próbowałem, npm list bowerale to nie wszystko.

Odpowiedzi:


112

Możesz skorzystać z npm-remote-lsmodułu. Możesz go zainstalować globalnie:

npm install -g npm-remote-ls

A potem zadzwoń:

npm-remote-ls bower

Alternatywnie, npm@5.2.0zainstalowany, możesz użyć npxi uniknąć globalnej instalacji polecenia - po prostu zadzwoń:

npx npm-remote-ls bower

7
Jak wyświetlić moduły zależne od danego modułu?
orad

2
to jest nadal potrzebne? nawet z nowszymi wersjami npm?
Simon_Weaver

1
dla konkretnej wersji możesz użyć tej składninpm-remote-ls primeng@1.0.0-beta.7
Simon_Weaver

2
@orad: Jeśli jest to ten, który zainstalowałeś, npm ls
Paul Lynch,

132

Możesz wygenerować drzewa zależności NPM bez konieczności instalowania zależności za pomocą polecenia

npm list

Spowoduje to wygenerowanie drzewa zależności dla projektu w bieżącym katalogu i wydrukowanie go na konsoli.

Możesz pobrać drzewo zależności określonej zależności, na przykład:

npm list [dependency]

Możesz również ustawić maksymalny poziom głębokości, wykonując czynność

npm list --depth=[depth]

Zauważ, że możesz przeglądać tylko drzewo zależności zależności, które zostały zainstalowane globalnie lub lokalnie w projekcie NPM.


11
Twój drugi drukuje tylko pakiety zależne od [zależność], nie drukuje zależności [zależność]. OP powiedział również, że nie tego szuka.
FINDarkside

7
Służy -prodtylko do wyświetlania zależności produkcyjnych (bez devDependencies).
pcworld

3
npm list i npm ls odczytują folder node_modules, nie możesz uzyskać drzewa bez uprzedniego zainstalowania zależności.
worc

lista npm --depth = 1 dla jednego poziomu
mintedsky


26

Oto niepotężne oficjalne polecenie:

npm view <PACKAGE> dependencies

Wyświetla tylko bezpośrednie zależności , a nie całe drzewo.


3
Czy pakiet musi zostać zainstalowany? .\npm view core-js dependenciesnic nie zwraca na moim komputerze.
channel_tape_coder,

@duct_tape_coder Nie, nie trzeba go instalować. core-jsnie ma żadnych zależności.
Cameron Hudson

9

Jeśli chcesz uzyskać faktyczną ścieżkę zależności konkretnego pakietu i chcesz wiedzieć, dlaczego go masz, możesz po prostu zapytać yarn why <MODULE>. przykład:

    $> yarn why mime-db
    yarn why v1.5.1
    [1/4] Why do we have the module "mime-db"...?
    [2/4] Initialising dependency graph...
    [3/4] Finding dependency...
    [4/4] Calculating file sizes...
    => Found "mime-db@1.37.0"
    info Reasons this module exists
       - "coveralls#request#mime-types" depends on it
       - Hoisted from "coveralls#request#mime-types#mime-db"
    info Disk size without dependencies: "196kB"
    info Disk size with unique dependencies: "196kB"
    info Disk size with transitive dependencies: "196kB"
    info Number of shared dependencies: 0
    Done in 0.65s.


5

Wyświetl wszystkie metadane dotyczące modułu npm

npm view mongoose(module name)

Wyświetl wszystkie zależności modułu

npm view mongoose dependencies

Wyświetl wszystkie wersje lub wersje modułu

npm view mongoose version
npm view mongoose versions

Wyświetl wszystkie słowa kluczowe

npm view mongoose keywords


1

Niestety npm nadal nie ma sposobu, aby wyświetlić zależności niezainstalowanych pakietów. Nawet strona pakietu nie wymienia poprawnie zależności. 🙄

Na szczęście instalacja przędzy :

brew install yarn

Pozwala na użycie polecenia info w celu wyświetlenia dokładnych zależności:

yarn info @angular/router@4.4.7 dependencies

yarn info @angular/router@4.4.7 peerDependencies


1
Dlaczego przędza zapewnia dokładny sposób wyświetlania zależności, a npm NIE zapewnia żadnego sposobu wyświetlania zależności, czy może to być spowodowane tym, że npm nie jest deterministyczny, a przędza jest?
Brian Ogden
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.