Node.js 相当于 npm list 的运行时?

Node.js runtime equvalent of npm list?

我是 运行 AWS Elastic Beanstalk 中的 Node.js Express Web 服务器。我希望在一个特殊的管理页面上列出活动节点模块版本。

是否有我可以调用的函数来列出我通常从 npm list 获得的详细信息?

例如:

├── async@0.9.0
├─┬ aws-sdk@2.1.17
│ ├─┬ xml2js@0.2.6
│ │ └── sax@0.4.2
│ └── xmlbuilder@0.4.2
├── crypto@0.0.3

是的,您可以以编程方式使用 npm

var npm = require('npm');

npm.load({}, function(err) {
  npm.commands.list(function(modules) {
    console.log(modules);
  });
});

记得先本地安装:npm install npm.

您可以将 child process to call any command line instruction from inside node. You can also add options to the instruction. For example to receive the npm list 数据生成为 json:

var spawn = require('child_process').spawn,
list    = spawn('npm', ['list', '--json']);

list.stdout.on('data', function (data) {
  console.log('json npm list: ' + data);
});

list.stderr.on('data', function (data) {
  console.log('there was an error retrieving npm list: ' + data);
});

list.on('close', function (code) {
  console.log('child process exited with code ' + code);
});