如何显示所有包依赖树

dcs*_*san 31 packages meteor

从0.9.3开始,我遇到了meteor包依赖的一些问题,例如某些第三方包没有声明它们的所有依赖关系(如下划线,通常包含但不包含在另一个包中).

是否有一种简单的方法来显示依赖树,就像npm一样?

流星列表将显示您项目中的内容

.meteor/versions将显示所有包,但我试图找出包含(或不包括)其他包的内容.

目前我收到如下错误,但没有包括Minimongoid afaik和grepping没有找到它的参考.

W20141001-19:19:46.137(-7)? (STDERR) /Users/dc/.meteor/packages/meteor-tool/.1.0.33.he3qxx++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/lib/node_modules/fibers/future.js:173
W20141001-19:19:46.137(-7)? (STDERR)                        throw(ex);
W20141001-19:19:46.138(-7)? (STDERR)                              ^
W20141001-19:19:46.141(-7)? (STDERR) ReferenceError: Minimongoid is not defined
W20141001-19:19:46.141(-7)? (STDERR)     at collections/user.coffee:1:20
W20141001-19:19:46.141(-7)? (STDERR)     at /Users/dc/dev/shumi/package-dev/app/.meteor/local/build/programs/server/app/collections/user.coffee.js:24:3
W20141001-19:19:46.142(-7)? (STDERR)     at /Users/dc/dev/shumi/package-dev/app/.meteor/local/build/programs/server/boot.js:168:10
W20141001-19:19:46.142(-7)? (STDERR)     at Array.forEach (native)
W20141001-19:19:46.142(-7)? (STDERR)     at Function._.each._.forEach (/Users/dc/.meteor/packages/meteor-tool/.1.0.33.he3qxx++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/lib/node_modules/underscore/underscore.js:79:11)
W20141001-19:19:46.142(-7)? (STDERR)     at /Users/dc/dev/shumi/package-dev/app/.meteor/local/build/programs/server/boot.js:82:5
Run Code Online (Sandbox Code Playgroud)

sba*_*sba 36

虽然我们正在等待官方工具来实现这一功能,但这里是uglyslow vershion:

for p in `meteor list | grep '^[a-z]' | awk '{ print $1"@"$2 }'`; do echo "$p"; meteor show "$p" | grep -E '^  [a-z]'; echo; done
Run Code Online (Sandbox Code Playgroud)

这将显示所有添加的包的依赖关系.它解析输出meteor listmeteor show package@version,并将在任何变化时中断.

  • 可以在这里找到稍微改进的版本 https://github.com/meteor/meteor/issues/2853 (abernix 于 2017 年 3 月 1 日发表的评论) (2认同)

ala*_*ing 8

从Meteor v1.5.2(2017-09-05 发布)开始,您现在可以看到完整的依赖关系树,如下所示:

meteor list --tree

这是输出的样子:

$ meteor list --tree

accounts-password@1.4.0
??? accounts-base@1.3.4
? ??? callback-hook@1.0.10
? ? ??? underscore@1.0.10
? ??? check@1.2.5 (top level)
? ??? ddp@1.3.1
? ? ??? ddp-client@2.1.3
? ? ? ??? callback-hook@1.0.10 (expanded above)
? ? ? ??? check@1.2.5 (top level)
? ? ? ??? ddp-common@1.2.9
Run Code Online (Sandbox Code Playgroud)

拉请求由sdarnel提供,可以在这里找到感兴趣的人:https: //github.com/meteor/meteor/pull/8936

  • 这是新答案!谢谢阿德里安:-) (2认同)

Bla*_*ere 3

这就是我所做的......

我运行meteor list,并将输出复制到记事本,以供稍后参考。

然后,我查看整个列表,输入:meteor show <package>在输出中查找:Implies: whatever... 这是告诉您特定包包含哪些内容的部分。基本上,输出中显示“暗示:某事”的部分,这些是您运行的包的依赖项meteor show <package>

然后...如果您获取“Implies: foopackage”中的包,并运行“meteor show foopackage”,它将告诉您依赖项的依赖项。

基本上,这是这个问题的粗略解决方案,没有官方的解决方案/功能/命令。

祝你好运。

PS在我的例子中,我想看看包含什么iron:router,通过上述过程,我确定它是useraccounts:semantic-ui包含useraccounts:core,而包含iron:router(不在meteor list!)

有关更多信息,请参阅以下页面:https://github.com/meteor/meteor/issues/2853