node.js - 确定从正在运行的 node.js 应用程序使用的 NPM 模块

标签 node.js npm

除了获取项目根目录下的 package.json 文件之外,还有其他方法可以确定正在运行的 node.js 应用程序的依赖项列表吗? node 是否将此元信息作为全局命名空间中的某个 var 提供?

最佳答案

如果您只是在应用程序目录中查找当前安装的 npm 包,那么您可以安装 npm包 (npm install -g npm) 和 programatically调用 ls列出已安装的包和依赖关系树。

显然,这与应用程序中是否实际需要安装的包无关。

用法没有很好的记录,但这应该可以帮助您入门。

var npm = require('npm');

npm.load(function(err, npm) {
    npm.commands.ls([], true, function(err, data, lite) {
        console.log(data); //or lite for simplified output
    });
});

例如:

{ dependencies:
   { npm: { version: '1.1.18', dependencies: [Object] },
     request: { version: '2.9.202' } } }

否则,我认为唯一的选择是反省 module模块以获取与当前加载/缓存的模块路径有关的信息。然而,这绝对不是作为公共(public) API 开发的。我不确定是否有任何替代方案,所以很想知道是否有例如

var req = require('request'); // require some module for demo purposes
var m = require('module');

// properties of m contain current loaded module info, e.g. m._cache

关于node.js - 确定从正在运行的 node.js 应用程序使用的 NPM 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10265832/

相关文章:

javascript - 连接 NPM 脚本命令?

node.js - Hyperledger Explorer 安装失败

javascript - 需要 "yarn/npm link"工作流来开发和发布 "multiple copies of react"模块

jsonlint 模式未验证

node.js - Node.js 中异步函数的问题

javascript - 如何确定 Node.js 正在等待什么来完成执行

javascript - 不使用循环的多个 MongoDB 查询?

node.js - Mongoose最新版本如何根据Date字段进行查询?

node.js - "npm set registry https://registry.npmjs.org/"有什么作用?

node.js - JSreport 和 Node.Js : how to generate a PDF file