在nodejs下部署远程github存储库的一部分

时间:2013-02-07 19:39:33

标签: node.js github

作为npm包使用的构建脚本的一部分,我正在修改(-g或者必需),我需要将远程github存储库中目录的内容复制到built目录中。

例如。 ACE编辑器版本 - 远程上的一堆文件。 https://github.com/ajaxorg/ace-builds/tree/master/src-min-noconflict

我不希望我的模块在本地拥有ACE文件,并且没有npm包用于我可以要求和使用的构建。它应该在建造时从最新的遥控器拉出来。

我不想克隆回购,但也许可以抓住拉链并从中取出一些东西。

有没有人知道任何已经可以执行此操作的包或脚本而无法访问shell上的git?我对依赖git犹豫不决,因为你可以在全局安装软件包并将其用作二进制文件......

我还能做什么?节点gyp?沃尔或许? component.js?任何可以从远程git文件系统引用和部署的东西......

1 个答案:

答案 0 :(得分:1)

这是一个选择吗?滚动你自己可能很简单(我不知道有什么存在)

警告:我从未尝试过这个


修改

这是一些粗略的代码。文件夹级别的内容查询不会返回编码内容,因此您需要迭代每个文件并发出另一个API请求(对于未经身份验证的请求,这可能会导致rate limit

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)
                   });    
    }); 
  };
});