2011-09-29 149 views
9

我已經遇到這種情況不少次,仍然沒有找到答案。我開始一個新的Node.js項目,這個項目將依賴於其他一些庫。爲了爭論起見,我們假設有些純粹是JS庫,可以在新項目中作爲git子模塊添加,但有些則需要一些額外的工作(比如npm安裝的系統依賴項或必須編譯的C庫) )。如何在NPM上處理git項目中的Node.js依賴項?

什麼是啓動這個項目,並把它添加到Git的,有以下兩個要求的最好辦法:

  • 別人的圖書館並不是致力於爲我們自己的回購協議,並代替子模塊或拉動態和npm安裝。
  • 不需要有一大串必須遵循的指令來克隆repo並創建工作環境。運行git子模塊更新--init --recursive沒問題,運行npm命令讀取package.json並安裝依賴關係很好(是否存在這樣的命令?),但強制所有人都通過「npm install _ _「的每個依賴關係都不好,如果不需要,我寧願不使用'make'或'ant'來做這件事。

任何想到這樣做的最佳方法?它看起來像是一個簡單而基本的東西,但我找不到我想要做的一個例子。

編輯:語法

+0

順便說一句,你可以使用'git clone --recursive ... foo',它與'git clone ...相同...foo && cd foo && git submodule update --init --recursive' – Pauan

回答

10

編輯忽略以下,但留下供參考。有時候我並不想清楚早上:)

做出package.json文件,添加你的依賴和你的安裝變得簡單:從你的項目目錄

npm install 

git ignore所有添加的項目。


npm submodule foo 

它通過git submodule所以github上安裝軟件包到node_modules,等會認識到,他們的鏈接。只要npm包含git URI,它就可以工作。不幸的是,很多人不這樣做,所以你對這些人不太好運。

此外,請注意,當您這樣做時,npm將不再適用於該模塊,例如,你無法通過npm更新,你必須通過git


做或者你可以這樣做:

./modules.js

modules.exports = [ '[email protected]', '[email protected]', '[email protected]' ]; 

。/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] ]); 
} 
+0

Sheezus - 看起來很傻,我不知道'npm install'沒有參數!這正是我所需要的......儘管您的定製解決方案也非常光滑!感謝您的幫助:)。 –

+0

謝謝你沒有刪除原來的anwser,這正是我所需要的。 :) – mik01aj

相關問題