npmをプログラマブルに使うときのメモ

npmをコマンドでなくスクリプトから使うときのメモ。と言ってもnpm installの代わりをさせたくらいなのだけど。

初期化

何をするにも(なのかな?少なくともnpm.commands.install()を実行するときは)npm.load()を最初に呼んでおく必要がある。

インストール

npm.commands.install()$ npm installの対になるメソッド。

ログ

インストール中のログを出力させたいときは以下のようなコードを書く。

npm.load({}, function() {
  npm.commands.install(['co'], function(err, data) {
    // ...
  });

  npm.registry.log.on('log', function(log) {
    // ログが出力される
    console.log(log);
  });
});

注意点としては、npm.registry.log.on()npm.commands.install()より後に実行しないといけない。

モジュールがインストールされているかどうかを調べる

npm内部でも使用しているらしいread-installedモジュールを使う。

var readInstalled = require('read-installed');

readInstalled('/path/to/package.json', { depth: 1, dev: false }, function(err, data) {
  // dataにインストール済みモジュールのデータが入っている
})