【问题标题】:how to show all package dependency tree如何显示所有包依赖树
【发布时间】:2014-11-27 00:23:03
【问题描述】:

从 0.9.3 开始,我遇到了流星包依赖项的一些问题,例如,一些第三方包没有声明它们的所有依赖项(比如下划线,通常会包含但在被另一个包使用时不会包含)。

有没有一种简单的方法来显示依赖树,就像 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

【问题讨论】:

标签: meteor packages


【解决方案1】:

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

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 listmeteor show package@version 的输出,并在其中发生任何变化时中断。

【讨论】:

【解决方案2】:

从 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

【讨论】:

  • 这是新的答案!谢谢阿德里安:-)
【解决方案3】:

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

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

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

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

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

祝你好运。

附:就我而言,我想查看包含iron:router 的内容,通过上述过程,我确定包含useraccounts:core 的是useraccounts:semantic-ui,而useraccounts:core 又包含iron:router(不在@ 987654330@!)

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

【讨论】:

    【解决方案4】:

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

    它适用于流星分发的原始源代码,因此需要一些调整才能在实际应用程序上运行(目前我无能为力),但这只是一个开始......

    【讨论】:

    • 看起来不错,但您能否简要解释一下您的代码是如何工作的?这样,如果由于某种原因您的 repo 被公共汽车撞到,遗留的东西就会被保留。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2013-06-16
    • 1970-01-01
    • 2017-09-03
    • 2013-03-20
    • 2016-12-24
    相关资源
    最近更新 更多