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.

BiAiB
źródło

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, [email protected]zainstalowany, możesz użyć npxi uniknąć globalnej instalacji polecenia - po prostu zadzwoń:

npx npm-remote-ls bower
Gergo Erdosi
źródło
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 [email protected]
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.

mgthomas99
źródło
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.

golopot
źródło
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 "[email protected]"
    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.
msangel
źródło
6

Możesz użyć howfat, który wyświetla również statystyki zależności:

npx howfat -r tree jasmine

screenot

Aleksiej Prochorow
źródło
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
Yogendra Singh
źródło
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/[email protected] dependencies

yarn info @angular/[email protected] peerDependencies

Robert Brisita
źródło
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