3

私がいじくり回しているnpmパッケージ(-gまたは必須)で使用されるビルドスクリプトの一部として、リモートgithubリポジトリ内のディレクトリの内容をディレクトリにコピーする必要がありますbuilt

例えば。ACEエディターバージョン-リモート上の一連のファイル。 https://github.com/ajaxorg/ace-builds/tree/master/src-min-noconflict

モジュールにACEファイルをローカルに持たせたくありません。また、必要で使用できるビルド用のnpmパッケージがありません。構築時に最新のリモートからプルする必要があります。

リポジトリのクローンを作成したくないのですが、おそらくzipballを取得して、それから何かを作成することができます。

gitシェルにアクセスせずにこれをすでに実行できるパッケージまたはスクリプトを知っている人はいますか?パッケージをグローバルにインストールしてバイナリとして使用できるため、gitに依存することを躊躇しています...

他に何ができますか?ノードgyp?おそらくヴォロ?component.js?リモートのgitファイルシステムから参照およびデプロイできるものはすべて...

4

1 に答える 1

1

これはオプションですか?自分でローリングするのは簡単かもしれません(私は何も存在しないことに気づいていません)

  • GitHub v3 APIのAjax.orgのJSラッパーを利用ます:node-github。シェルは必要ありません。
  • repos.getContentは、ファイルまたはフォルダーの内容を返します。
  • GetContentsBase64は、コンテンツパスにある各ファイルのエンコードされたコンテンツを返します
  • デコードして、あなたがすることをしてください。

警告:私はこれを試したことがありません


編集

ここにいくつかの大まかなコードがあります。フォルダレベルでのコンテンツクエリはエンコードされたコンテンツを返さないため、各ファイルを繰り返し処理して別のAPIリクエストを作成する必要があります(これにより、認証されていないリクエストのレート制限が高くなる可能性があります)

var GitHubApi = require("github")
   ,fs = require("fs");

var github = new GitHubApi({
  version: "3.0.0"
 ,timeout: 5000
});

var msg = {
  user: "visionmedia"
 ,repo: "express"
 ,path: "lib/router"
};

github.repos.getContent(msg, function(err, res) {
  delete res.meta; //appended by wrapper, remove for iteration

  for(file in res) {
    msg.path = res[file].path;      

    github.repos.getContent(msg, function(err, res) {

      fs.writeFile(res.name
                  ,res.content
                  ,res.encoding
                  ,function(err){
                     console.log("Wrote %s to filesystem!", res.name)
                   });    
    }); 
  };
});
于 2013-02-07T21:37:11.423 に答える