javascript - 根据文件中的需要列出文件中的依赖项

标签 javascript node.js module npm

如果我有一个名为 index.js 的文件,它需要几个模块。有什么方法可以获得所需模块的列表吗?

var _ = require("underscore")
var express = require("express")
var app = express()
return app

然后我还有另一个这样的文件。

var listRequired = require("list-required")
listRequired("./index.js").then(function(moduleTypes){
  console.log(moduleTypes.npm) // ["underscore", "express"]
})

我真的还想要一种跟踪 npm 模块(例如 下划线)、 native Node 模块(例如 cryptopath >)和本地文件(例如./routes.js)

因此,如果 index.js 包含以下内容:

var _ = require("underscore")
var express = require("express")
var routes = require("./routes")
var app = express()
module.exports = app

并且 routes.js 包含以下内容:

var crypto = require("crypto")
var Promise = require("bluebird")
module.exports = {}

然后我还有另一个这样的文件。

var listRequired = require("list-required")/*(file, deepOption)*/
listRequired("./index.js", true).then(function(moduleTypes){
  console.log(moduleTypes.native) // ["crypto"]
  console.log(moduleTypes.local) // ["./routes"]
  console.log(moduleTypes.npm) // ["underscore", "express"]
})

这是否已经以某种方式存在? ES6 import 支持也很好。

最佳答案

用于解决此类问题的技术称为 static analysis 。您使用解析源代码并返回 abstract syntax tree 的东西。 (这非常类似于浏览器读取 HTML 并将其转换为 DOM 的方式。)

一旦有了 AST,遍历树并寻找有趣的部分(例如 require 调用)就相对简单了。

看起来有人已经编写了一个模块来完成这个任务,名为 required .

关于javascript - 根据文件中的需要列出文件中的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575453/

相关文章:

javascript - 单击菜单以外的任何内容时使下拉菜单消失

javascript - 如何使用 momentjs 从 firebase 检索多个值?

javascript - 使用 create-react-app 我得到 EEXIST : file already exists

jquery - 如何通过查询字符串将数组从ajax传递到nodejs

javascript - JavaScript 中的经典脚本与模块脚本

javascript - 将 Flow 用于样式化组件 Props

javascript - 如何跨选定的工作表选项卡运行菜单项脚本

mysql - 如何使用 NodeJS 的 SSH 隧道连接到 MYSQL 数据库?

python - 添加一个没有 root 权限的 python 模块

python - 如何将数据库路由器添加到 Django 项目