根据文件中的要求列出文件中的依赖项
Listing out the dependancies from a file based on what's required in the file
如果我有一个名为 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 模块(例如 underscore
)、本机节点模块(例如 crypto
、path
)和本地文件(例如../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. You use something that parses source code and returns an abstract syntax tree。 (这很像浏览器读取 HTML 并将其转换为 DOM 的方式。)
一旦你有了 AST,就可以相对简单地遍历树并寻找有趣的位,例如 require
调用。
看起来有人已经编写了一个模块来实现这一点,称为 required。
如果我有一个名为 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 模块(例如 underscore
)、本机节点模块(例如 crypto
、path
)和本地文件(例如../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. You use something that parses source code and returns an abstract syntax tree。 (这很像浏览器读取 HTML 并将其转换为 DOM 的方式。)
一旦你有了 AST,就可以相对简单地遍历树并寻找有趣的位,例如 require
调用。
看起来有人已经编写了一个模块来实现这一点,称为 required。