如何从我的节点应用程序访问npm注册表数据

时间:2014-04-17 19:01:17

标签: node.js

我想从我的nodejs应用程序访问npm注册表,并检索每个模块/包的说模块/包名称和git url。如何获取此npm注册表数据?我们是否有一些现有模块可以帮助我做到这一点?

感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

您应该能够使用子进程模块来执行npm。以下是节点网站的代码示例:

var exec = require('child_process').exec,
child;

child = exec('cat *.js bad_file | wc -l',
  function (error, stdout, stderr) {
    console.log('stdout: ' + stdout);
    console.log('stderr: ' + stderr);
    if (error !== null) {
      console.log('exec error: ' + error);
    }
});

答案 1 :(得分:0)

信不信由你,但是npm本身is an npm module。请参阅“以编程方式使用npm”部分,了解如何执行此操作。

答案 2 :(得分:0)

这是我如何以编程方式使用npm的系统副本(而不是仅仅以编程方式安装单独的npm副本):

function loadNpm(cb) {
  require('child_process').exec('npm', function(err, stdout, stderr) {
    if (err) return cb(err);
    var m = /npm@[^ ]+ (.+)\n/i.exec(stdout);
    if (!m)
      return cb(new Error('Unable to find path in npm help message'));
    cb(undefined, require(m[1]));
  });
}

// usage ...
loadNpm(function(err, npm) {
  if (err) throw err;
  // load() is required before using npm API
  npm.load(function(err, npm) {
    if (err) throw err;
    // e.g. npm.search('ssh', true, function(err, results) { console.dir(results); });
  });
});