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

时间:2015-03-15 00:36:31

标签: node.js amazon-web-services express

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

我是否可以调用一个函数来列出我通常从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

2 个答案:

答案 0 :(得分:1)

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

var npm = require('npm');

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

请务必先在本地安装:npm install npm

答案 1 :(得分:0)

您可以生成child process以从内部节点调用任何命令行指令。您还可以向指令添加选项。例如,以json:

的形式接收npm list数据
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);
});