Как просмотреть дерево зависимостей данного модуля npm?


156

Как я могу получить дерево модуля, доступного для npm, но не установленного локально?

npm llвыполняет работу для локально установленных пакетов. Но это не работает для модулей, которые не установлены, или модулей, установленных глобально.

Я пробовал npm list bowerно это не то.


1
Если все, что вам нужно, - это граф зависимостей, npm.broofa.com и npm.anvaka.com сделают это для публично опубликованных модулей.
broofa

@broofa спасибо за ссылки! Предлагаю вам разместить их в качестве ответов. Я проверил, что на @ angular / cli и npm.anvaka.com вялый и нечитаемый, но npm.broofa.com отлично справляется с этим
BiAiB

Ответы:


114

Вы можете использовать npm-remote-lsмодуль. Вы можете установить его глобально:

npm install -g npm-remote-ls

А потом звоните:

npm-remote-ls bower

В качестве альтернативы, npm@5.2.0после установки вы можете использовать npxи избегать глобальной установки команды - просто позвоните:

npx npm-remote-ls bower

8
Как увидеть модули, зависящие от данного модуля?
orad

2
это еще нужно? даже с более новыми версиями npm?
Simon_Weaver

1
для конкретной версии вы можете использовать этот синтаксисnpm-remote-ls primeng@1.0.0-beta.7
Simon_Weaver

2
@orad: Если он у вас установлен, npm ls
Пол Линч

148

Вы можете создавать деревья зависимостей NPM без необходимости установки зависимости с помощью команды

npm list

Это сгенерирует дерево зависимостей для проекта в текущем каталоге и распечатает его на консоли.

Вы можете получить дерево зависимостей конкретной зависимости следующим образом:

npm list [dependency]

Вы также можете установить максимальный уровень глубины, выполнив

npm list --depth=[depth]

Обратите внимание, что вы можете просматривать дерево зависимостей только той зависимости, которую вы установили глобально или локально для проекта NPM.


12
Ваш второй печатает только пакеты, зависящие от [dependency], он не печатает зависимости [dependency]. OP также специально сказал, что это не то, что он ищет.
FINDarkside

7
Используйте -prodтолько для вывода списка производственных зависимостей (без devDependencies).
pcworld

3
npm list и npm ls читают папку node_modules, вы не можете получить дерево без предварительной установки зависимостей.
Ворк,

npm list --depth = 1 для одного уровня
mintedsky

83

Этот сайт позволяет вам просматривать дерево пакетов в виде графа узлов в 2D или 3D.

http://npm.anvaka.com/#/view/2d/waterline

введите описание изображения здесь

Отличная работа от @Avanka!


5
Замечательно " npm.anvaka.com/#/view/2d/no-one-left-behind " "Зависит от каждого пакета в npm". : D
OZZIE

Вылетает черт возьми из Chrome 79.0.3945.130 (официальная сборка) (64-разрядная версия) на Mac
Брайан Огден,

26

Вот бессильная официальная команда:

npm view <PACKAGE> dependencies

Он печатает только прямые зависимости , а не все дерево.


3
Нужно ли устанавливать пакет? .\npm view core-js dependenciesничего не возвращает на моей машине.
duct_tape_coder

1
@duct_tape_coder Нет, его не нужно устанавливать. core-jsне имеет зависимостей.
Кэмерон Хадсон,

9

Если вы хотите узнать реальный путь зависимости конкретного пакета и узнать, почему он у вас есть, вы можете просто спросить yarn why <MODULE>. пример:

    $> 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.



6

Просмотреть все метаданные о модуле npm

npm view mongoose(module name)

Просмотреть все зависимости модуля

npm view mongoose dependencies

Просмотреть все версии или версии модуля

npm view mongoose version
npm view mongoose versions

Просмотреть все ключевые слова

npm view mongoose keywords


1

К сожалению, у npm до сих пор нет возможности просматривать зависимости неустановленных пакетов. Даже на странице пакета нет правильного списка зависимостей. 🙄

Удачно устанавливаем пряжу :

brew install yarn

Позволяет использовать свою команду info для просмотра точных зависимостей:

yarn info @angular/router@4.4.7 dependencies

yarn info @angular/router@4.4.7 peerDependencies


1
Почему yarn предоставляет точный способ просмотра зависимостей, а npm НЕ предоставляет возможности просматривать зависимости, может ли это быть из-за того, что npm не детерминирован, а yarn - нет?
Брайан Огден,

0

Чтобы получить его в виде списка:

% npx npm-remote-ls --flatten dugite -d false -o false
[
  'dugite@1.91.3',
  'checksum@0.1.1',
  'progress@2.0.3',
  'mkdirp@0.5.5',
  'rimraf@2.7.1',
  'tar@4.4.13',
  'optimist@0.3.7',
  'got@9.6.0',
  'minimist@1.2.5',
  'chownr@1.1.4',
  'glob@7.1.6',
  'fs-minipass@1.2.7',
  'minizlib@1.3.3',
  'minipass@2.9.0',
  'safe-buffer@5.2.1',
  'yallist@3.1.1',
  'wordwrap@0.0.3',
  '@szmarczak/http-timer@1.1.2',
  'cacheable-request@6.1.0',
  '@sindresorhus/is@0.14.0',
  'decompress-response@3.3.0',
  'duplexer3@0.1.4',
  'lowercase-keys@1.0.1',
  'mimic-response@1.0.1',
  'get-stream@4.1.0',
  'to-readable-stream@1.0.0',
  'p-cancelable@1.1.0',
  'url-parse-lax@3.0.0',
  'fs.realpath@1.0.0',
  'inflight@1.0.6',
  'inherits@2.0.4',
  'once@1.4.0',
  'path-is-absolute@1.0.1',
  'minimatch@3.0.4',
  'defer-to-connect@1.1.3',
  'clone-response@1.0.2',
  'get-stream@5.2.0',
  'http-cache-semantics@4.1.0',
  'lowercase-keys@2.0.0',
  'responselike@1.0.2',
  'keyv@3.1.0',
  'pump@3.0.0',
  'prepend-http@2.0.0',
  'normalize-url@4.5.0',
  'wrappy@1.0.2',
  'brace-expansion@1.1.11',
  'json-buffer@3.0.0',
  'end-of-stream@1.4.4',
  'concat-map@0.0.1',
  'balanced-match@1.0.0'
]
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.