查看依赖于包X

时间:2016-11-27 02:00:09

标签: node.js npm

我正在为特定的NPM包收到一些node-gyp警告,在这种情况下,包是“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视图只会查找包的远程数据,我很高兴使用NPM上的聚合数据显示依赖于get-cursor-position的所有包,我可以对我做一些手动工作结束与本地包比较。

我也尝试过:

npm ls foo

就我而言,我尝试过:

npm ls suman-events

它似乎没有找到我期望它拿起的东西。我原以为它会在我的案例中选择“suman-example-reporter”=&gt;

正如您在下图中所看到的,“suman-example-reporter”是我项目中的直接依赖(它位于package.json中),而suman-example-reporter依赖于“suman-events”(和“suman”) -events“也在package.json中,因为它也是我项目的直接依赖项。”

enter image description here

任何人都知道如何做到这一点?

3 个答案:

答案 0 :(得分:3)

正如Ryan在评论中所建议的,SO thread将显示与指定包相关的依赖树,因此您可以看到哪些包直接/间接需要它。

例如,如果您安装rimrafonce是一个依赖项,您可以查看导致它安装的软件包:

$ 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 repo链接,README,并且肯定会在树中包含每个模块(有些可能会被基本{{1}跳过})。

答案 1 :(得分:1)

npm ls <options>命令绝对是你想要的。

@Aurora的答案基本上是正确的

以下是该命令的文档:

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

它说

  

“以ll或la运行时,默认显示扩展信息。”

因此,要获得项目中依赖于x的完整依赖项列表,请尝试:

$ npm la x

而不是

$ npm ls x

答案 2 :(得分:0)

npmjs.com上的页面列出了所有依赖包。在这种情况下,只有5个。