Я хочу получить доступ к реестру npm из моего приложения nodejs и получить, скажем, имя модуля / пакета и URL-адрес git для каждого из модулей / пакетов. Как мне получить эти данные реестра npm? Есть ли у нас какие-то существующие модули, которые помогут мне в этом?

Любая помощь приветствуется.

0
user3537627 17 Апр 2014 в 23:01

3 ответа

Лучший ответ

Вот как я программно использую системную копию 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); });
  });
});
0
mscdex 17 Апр 2014 в 19:58

Вы должны иметь возможность использовать модуль дочернего процесса для выполнения 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);
    }
});
0
PeterVC 17 Апр 2014 в 19:22

Вы не поверите, но сам npm является модулем npm. См. Раздел Использование npm в программном обеспечении, чтобы узнать, как это сделать.

0
Scimonster 17 Апр 2014 в 19:30