我怎样才能处理项目中的Node.js依赖与gm与NPM?

我已经遇到了这种情况不less次,仍然没有find答案。 我开始一个新的Node.js项目,这个项目将依赖于其他一些库。 为了说明问题,假设有些纯粹的JS库可以作为git子模块添加到新项目中,但有些则需要额外的工作(比如npm安装的系统依赖项,或者必须编译的C库)。

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

  • 其他人的图书馆没有承诺自己的回购,而是submodules或被拉动dynamic和npm安装。
  • 不需要有一大堆必须遵循的指令来克隆回购和有一个工作环境。 运行git子模块更新–init –recursive是好的,运行一个npm命令来读取package.json并安装依赖关系是好的(这样的命令是否存在?),但强迫大家运行一个“npm install _ _”每一个依赖关系都是不好的,如果我不需要,我宁愿不使用'make'或'ant'来做这件事。

任何想法的最好办法做到这一点? 这似乎是这样一个简单的,基本的东西,但我找不到我想要做的一个例子。

编辑:语法

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

做一个package.json文件,添加你的依赖和你的安装简单地变成:

 npm install 

从你的项目目录。 git ignore所有添加的项目。


 npm submodule foo 

它通过git submodule将软件包安装到node_modules ,所以github等会识别它们是链接的。 只要npm包含了一个git URI,它就可以工作。 不幸的是,很多人不这样做,所以你在这些方面倒霉了。

另外,请注意,当你这样做时, npm将不再在模块上工作,例如你不能通过npm更新,你必须通过git


或者你可以做一些事情:

./modules.js

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

。/使

 #!/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] ] ); }