1

私のnode.jsアプリケーションは、ユーザーが直接実行するコマンドラインアプリケーションです。github リポジトリに電話をかけ、そのローカル バージョンを github リポジトリの master ブランチの最新バージョンと比較することは理にかなっています。バージョンが古い場合は、ユーザーにメッセージを表示します。

では、このフォーン ホームを実現し、バージョンを比較するにはどうすればよいでしょうか。

4

1 に答える 1

0

これを自分で行うためのソリューションを作成しました。依存関係bal-util (so npm install bal-util) が必要です。コードは次のとおりです。

packageCompare関数のソース コードは、https ://github.com/balupton/bal-util/blob/master/src/lib/compare.coffee にあります。

コーヒースクリプト

# Prepare
balUtil = require('bal-util')
pathUtil = require('path')
debug = false

# Compare
balUtil.packageCompare({
    local: pathUtil.join(__dirname, '..', 'package.json')
    remote: 'https://raw.github.com/bevry/docpad/master/package.json'
    newVersionCallback: (details) ->
        if debug
            console.log """
                There is a new version of #{details.local.name} available, you should probably upgrade...
                current version:  #{details.local.version}
                new version:      #{details.remote.version}
                grab it here:     #{details.remote.homepage}
                """
        else
            console.log "There is a new version of #{details.local.name} available"
})

JavaScript

// Prepare
var balUtil, debug, pathUtil;
balUtil = require('bal-util');
pathUtil = require('path');
debug = false;

// Compare
balUtil.packageCompare({
  local: pathUtil.join(__dirname, '..', 'package.json'),
  remote: 'https://raw.github.com/bevry/docpad/master/package.json',
  newVersionCallback: function(details) {
    if (debug) {
      return console.log("There is a new version of " + details.local.name + " available, you should probably upgrade...\ncurrent version:  " + details.local.version + "\nnew version:      " + details.remote.version + "\ngrab it here:     " + details.remote.homepage);
    } else {
      return console.log("There is a new version of " + details.local.name + " available");
    }
  }
});
于 2012-08-19T02:27:01.370 に答える