【问题标题】:How can I see the full nodejs "require()" tree starting at a given file?如何查看从给定文件开始的完整 nodejs“require()”树?
【发布时间】:2015-05-30 15:48:22
【问题描述】:

我需要查看某种依赖关系树,显示从特定文件开始的各种require()s。例如,如果我有一个像这样的server.js 文件:

// server.js
var myThing = require('./myThing');

还有一个像这样的myThing.js 文件:

// myThings.js
var mongodb = require('mongodb');

有没有办法看到server.js 需要mongodb 而无需手动遍历myThing.js

我很想看到像npm list 这样的树生成,例如:

alex@alex-pc ~/repos/test $ npm list
test@1.0.0 /home/alex/repos/test
├─┬ gulp@3.8.11
│ ├── archy@1.0.0
│ ├─┬ chalk@0.5.1
│ │ ├── ansi-styles@1.1.0
│ │ ├── escape-string-regexp@1.0.3
│ │ ├─┬ has-ansi@0.1.0
│ │ │ └── ansi-regex@0.2.1
│ │ ├─┬ strip-ansi@0.3.0
│ │ │ └── ansi-regex@0.2.1
│ │ └── supports-color@0.2.0
│ ├── deprecated@0.0.1

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    你可以使用madge查看依赖树

    【讨论】:

    • 非常酷,我很生气
    • 它确实是“黑色魔法”
    【解决方案2】:

    dependo

    不是排序,而是可视化你的文件

    【讨论】:

      【解决方案3】:

      我不知道任何现有的包,但您可以使用module.parentmodule.children 属性创建一个。阅读here。要获取包的版本,您应该阅读每个包的package.json

      npm 本身也可以包含有用的代码。你可以尝试在这里获取它 - https://github.com/npm/npm

      【讨论】:

      • 这将如何与 require('./myThing') 一起工作,这只是一个 myThing.js 文件 - 而不是带有 package.json 的整个包?
      • myThing.js 将在server.js 的module.children 中,但没有任何package.json。所以,通过这个事实你可以检测到它不是一个包。
      猜你喜欢
      • 1970-01-01
      • 2011-04-08
      • 2016-07-25
      • 2014-11-17
      • 2015-09-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多