如何使用NPM处理git上项目中的Node.js依赖关系?

如何使用NPM处理git上项目中的Node.js依赖关系?,git,node.js,npm,Git,Node.js,Npm,我已经多次遇到这种情况,但仍然没有找到答案。我正在启动一个新的Node.js项目,这个项目将依赖于其他一些库。为了便于讨论,假设有些是纯JS库,可以作为git子模块添加到新项目中,但有些则需要额外的工作(例如npm安装的系统依赖项,或者必须编译的C库) 启动此项目并将其添加到git的最佳方式是什么,并满足以下两个要求: 其他人的库并不致力于我们自己的repo,而是子模块,或者由npm动态拉入并安装 不需要有一个大的指示列表,只需遵循这些指示即可克隆回购协议并拥有一个工作环境。运行git sub

我已经多次遇到这种情况,但仍然没有找到答案。我正在启动一个新的Node.js项目,这个项目将依赖于其他一些库。为了便于讨论,假设有些是纯JS库,可以作为git子模块添加到新项目中,但有些则需要额外的工作(例如npm安装的系统依赖项,或者必须编译的C库)

启动此项目并将其添加到git的最佳方式是什么,并满足以下两个要求:

  • 其他人的库并不致力于我们自己的repo,而是子模块,或者由npm动态拉入并安装
  • 不需要有一个大的指示列表,只需遵循这些指示即可克隆回购协议并拥有一个工作环境。运行git submodules update--init--recursive很好,运行npm命令读取package.json并安装依赖项也很好(这样的命令存在吗?),但是强制每个人对每个依赖项都执行“npm安装”是不好的,如果不需要的话,我不想使用“make”或“ant”来完成
有没有什么好办法?这似乎是一件简单、基本的事情,但我找不到一个例子来说明我在尝试做什么


编辑:语法

编辑忽略下面的内容,但留作参考。有时候早上我想不清楚:)

制作一个
package.json
文件,添加您的依赖项,您的安装就会变成:

npm install
从您的项目目录
git忽略所有添加的项目


它通过
git子模块
将包安装到
node\u模块
中,这样github等将识别它们是链接。只要npm包包含git URI,这就可以工作。不幸的是,一个好的数字没有,所以你在这些方面运气不佳

另外,请注意,当您执行此操作时,
npm
将不再在模块上工作,例如,您不能通过
npm
进行更新,您必须通过
git


或者你可以这样做:

/modules.js

modules.exports = [ 'express@1.0', 'jade@2.0', 'stylus@3.0' ];
/make

#!/usr/bin/env node
var modules = require( './modules' )
  ,   spawn = require('child_process').spawn;

for( var i=0, l=modules.length; i<l; i++ ){
    spawn( 'npm', [ 'install', modules[i] ] );
}
#/usr/bin/env节点
变量模块=需要(“./modules”)
,spawn=require('child_process')。spawn;

对于(var i=0,l=modules.length;ISHEZUS——我不知道没有参数的“npm安装”似乎太傻了!这正是我所需要的……尽管您的自定义解决方案也非常灵活!感谢您的帮助:)。感谢您没有删除您原来的anwser,这正是我所需要的。:)顺便说一下,您可以使用git clone--recursive。。。foo
与git clone相同。。。foo&&cd foo&&git子模块更新--init--recursive
#!/usr/bin/env node
var modules = require( './modules' )
  ,   spawn = require('child_process').spawn;

for( var i=0, l=modules.length; i<l; i++ ){
    spawn( 'npm', [ 'install', modules[i] ] );
}