如何显示所有包依赖树

时间:2014-10-02 02:24:27

标签: meteor packages

从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

4 个答案:

答案 0 :(得分:36)

虽然我们正在等待官方工具拥有此功能,但这里是丑陋的版本:

def ledger
  super || begin
    ledger = create_ledger(description: "#{name} Ledger")
    update_column(:ledger_id, ledger.id)
    ledger
  end
end

这将显示所有添加的包的依赖关系。它解析for p in `meteor list | grep '^[a-z]' | awk '{ print $1"@"$2 }'`; do echo "$p"; meteor show "$p" | grep -E '^ [a-z]'; echo; done meteor list的输出,并在任何变化时中断。

答案 1 :(得分:6)

从Meteor v1.5.2(released 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

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

答案 2 :(得分:3)

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

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

然后,我走下整个列表,输入:meteor show <package>查看输出:Implies: whatever ...这是告诉您特定包包含内容的部分。基本上,输出的部分表示&#34;意味着:某些&#34;,这些是您为meteor show <package>运行的包的依赖关系。

然后......如果你带着包裹进入&#34;意味着:foopackage&#34;并且运行&#34; meteor show foopackage&#34;这会告诉你 依赖关系的依赖。

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

祝你好运。

P.S。在我的情况下,我想查看包含iron:router的内容,并通过上述过程,我确定useraccounts:semantic-ui包括useraccounts:core,其中包括iron:routermeteor list }(if(filter_var($url, FILTER_VALIDATE_URL) !== false) 中没有!)

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

答案 3 :(得分:2)

我写了一些code here来构建一个包树,并制作这样的图片:

enter image description here

它处理了流星分布的原始源代码,因此需要进行一些调整才能在实际的应用程序上工作(目前我无法帮助解决这个问题),但这只是一个开始......