Просмотр локальных пакетов NPM, которые зависят от пакета X

Я получаю немного node-gyp предупреждения для конкретного пакета NPM, в данном случае это пакет "get-cursor-position". Я хотел бы узнать, какие пакеты в моем локальном каталоге node_modules зависят от этого пакета. (Это может быть нелегко сделать).

Если я бегу:

$ npm view get-cursor-position

Я получил:

{ name: 'get-cursor-position',
  description: 'Get the cursor\'s current position in your terminal.',
  'dist-tags': { latest: '1.0.3' },
  versions: 
   [ '0.0.1',
     '0.0.2',
     '0.0.4',
     '0.0.5',
     '1.0.0',
     '1.0.1',
     '1.0.2',
     '1.0.3' ],
  maintainers: [ 'bubkoo <bubkoo@163.com>' ],
  time: 
   { modified: '2016-11-01T02:36:07.728Z',
     created: '2016-03-05T03:42:31.517Z',
     '0.0.1': '2016-03-05T03:42:31.517Z',
     '0.0.2': '2016-03-07T00:35:36.627Z',
     '0.0.4': '2016-03-10T07:21:21.364Z',
     '0.0.5': '2016-03-10T07:25:04.846Z',
     '1.0.0': '2016-04-16T08:11:34.546Z',
     '1.0.1': '2016-06-03T15:57:55.767Z',
     '1.0.2': '2016-06-13T14:19:32.966Z',
     '1.0.3': '2016-11-01T02:36:07.728Z' },
  homepage: 'https://github.com/bubkoo/get-cursor-position',
  keywords: [ 'terminal', 'console', 'cursor', 'position', 'ansi', 'escape' ],
  repository: 
   { type: 'git',
     url: 'git+https://github.com/bubkoo/get-cursor-position.git' },
  author: 'bubkoo <bubkoo.wy@gmail.com>',
  bugs: { url: 'https://github.com/bubkoo/get-cursor-position/issues' },
  license: 'MIT',
  readmeFilename: 'README.md',
  version: '1.0.3',
  main: 'index.js',
  scripts: 
   { test: 'echo "Error: no test specified" && exit 1',
     install: 'node-gyp rebuild' },
  gypfile: true,
  gitHead: '56d403bb0e554532d17c403c47421ce8d2db2dec',
  dist: 
   { shasum: '0e41d60343b705836a528d69a5e099e2c5108d63',
     tarball: 'https://registry.npmjs.org/get-cursor-position/-/get-cursor-position-1.0.3.tgz' },
  directories: {} }

Я верю, что npm view будет просто искать удаленные данные для пакета, я рад использовать агрегированные данные в NPM, показывая все пакеты, которые зависят от get-cursor-position, и я могу сделать некоторую ручную работу на моем конце, чтобы сравнить с локальными пакетами.

Я также попробовал:

npm ls foo

В моем случае я попытался:

npm ls suman-events

и это, казалось, не подняло то, что я ожидал это поднять. Я бы ожидал, что это поднимет "suman-example-reporter" в моем случае =>

Как вы можете видеть на рисунке ниже, "suman-example-reporter" является прямой зависимостью в моем проекте (он находится в package.json), а suman-example-reporter зависит от "suman-events" (и "suman-events" также в package.json, потому что это также прямая зависимость моего проекта).

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

Кто-нибудь знает, как это сделать правильно?

3 ответа

Решение

Как предположил Райан в комментариях, npm ls <package> покажет дерево зависимостей, относящееся к указанному пакету, чтобы вы могли видеть, какие пакеты прямо / косвенно требуют этого.

Например, если вы установите rimraf, once является зависимостью, и вы можете посмотреть, какой пакет вызывает его установку:

$ npm ls once
yourpackage@1.0.0 /path/to/pkg
└─┬ rimraf@2.5.4
  └─┬ glob@7.1.1
    └── once@1.4.0

Следовательно, вы можете видеть, что once был установлен, потому что glob требует этого, и rimraf (который я указал в моем package.json) зависел от glob,

Если требуется расширенная информация, используйте npm ls --long (или это сокращенный синтаксис, npm la / npm ll). Расширенный вывод также будет включать описание модуля, ссылку на репозиторий Git, README и определенно будет включать каждый модуль в дереве (некоторые могут быть пропущены с основными npm ls).

npm ls <options> Команда определенно то, что вы хотите.

@ Аврора ответ в основном правильный

Вот документы для команды:

https://docs.npmjs.com/cli/ls

это говорит

Msgstr "При запуске как ll или la, он показывает расширенную информацию по умолчанию."

Итак, чтобы получить полный список зависимостей в вашем проекте, которые зависят от x, попробуйте:

$ npm la x

вместо

$ npm ls x

На странице npmjs.com перечислены все зависимые пакеты. В этом случае их всего 5.

Другие вопросы по тегам