我正在为特定的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中,因为它也是我项目的直接依赖项。”
任何人都知道如何做到这一点?
答案 0 :(得分:3)
正如Ryan在评论中所建议的,SO thread将显示与指定包相关的依赖树,因此您可以看到哪些包直接/间接需要它。
例如,如果您安装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 repo链接,README,并且肯定会在树中包含每个模块(有些可能会被基本{{1}跳过})。
答案 1 :(得分:1)
npm ls <options>
命令绝对是你想要的。
@Aurora的答案基本上是正确的
以下是该命令的文档:
它说
“以ll或la运行时,默认显示扩展信息。”
因此,要获得项目中依赖于x的完整依赖项列表,请尝试:
$ npm la x
而不是
$ npm ls x
答案 2 :(得分:0)
npmjs.com上的页面列出了所有依赖包。在这种情况下,只有5个。