2012-03-03 212 views
8

我试图让npm安装node-gitteh作为依赖关系通过npm installpackage.json读取。不幸的是,这个npm包在节点0.6.x中被破坏了,但没有问题,因为有一个分叉的repo来修复这些问题(https://github.com/hughsk/node-gitteh.git)。npm安装分模块git子模块

现在的问题是,这个分叉回购有一个子模块,所以如果我尝试从GitHub在package.json下载tar:

, "dependencies" : { 
    "gitteh" : "https://github.com/hughsk/node-gitteh/tarball/master" 
} 

我得到等同于“子模块文件夹中没有找到”错误。如果我手动克隆相同的回购,并从node-gitteh文件夹执行递归子模块更新和npm install,它工作正常,但我无法弄清楚如何让npm来做到这一点。

回答

1

我有同样的问题,迄今为止只依靠克隆我的模块到node_modules和手动进行子模块更新。如果npm自动处理这将是很好的。

在的package.json有一个脚本场(见npm docs) 所以可以做

"scripts":{"preinstall": "git submodule update -i -r"} 

对于这样的一个例子见https://github.com/isaacs/octave-test

+1

npm不会复制'.gitmodules',这样只会在本地工作:( – 2012-03-15 17:04:59

+0

在我的情况下,npm恰好给我一个.gitmodules,但如果没有.git文件告诉我什么版本安装::( – Steve 2012-12-12 11:29:58

+0

Mine保留'.gitmodules'文件,但就是这样,其他的git元数据都没有关闭,子模块目录根本没有显示出来。 – Chev 2014-04-11 18:48:44

-2

根据the docs,你需要提供特殊格式的git url。 此外,它需要指向git回购(您将用于git clone的地址相同),而不是github提供的tarball。

在你的情况(GIT通过HTTPS),这将是:

, "dependencies" : { 
    "gitteh" : "git+https://github.com/hughsk/node-gitteh" 
} 

利用这一点,故宫将默认为master分支。