2012-08-31 101 views
6

在node.js應用程序中處理內部模塊的首選方法是什麼?如何管理內部Node.JS模塊

我的意思是,目前我們有一個相當大的應用程序,有幾個依賴,通過npm安裝。我們有node_modules.gitignore。因此它不在存儲庫中。我們使用npm shrinkwrap來凍結模塊版本,因此,在部署時,我們需要將node_modules所需的東西放在一起。

問題是,由於應用程序越來越大,我們希望將其拆分爲更小的模塊。現在,如果我創建了foo模塊並將其放入node_modues,我需要在回購中允許它,這似乎不太好,因此忽略並檢出了node_modules中的模塊。

我們不能在npm註冊表上發佈這些信息,因爲它們並不真正「公開」。

有什麼明顯的解決方案,我不知道?

+1

我只是將我的私有庫/模塊粘貼到項目下的'/ lib'目錄下,而不是'npm_modules'中。這樣他們也可以被包含在Git中。 –

+0

是的,它有一個lib文件夾和require('./ lib/myThing')是非常常見的 –

+2

隨着lib文件夾,我需要明確命名模塊,每次我需要他們。我需要他們很多:)從各種各樣的地方。我不太喜歡'require(「../../../../../ lib/foo」)'。讓它們在節點模塊中使訪問變得更容易。 –

回答

7

我同意你的審美觀,即不混合第三方非回購商品與你的內部版本控制內容。

NODE_PATH搜索路徑變量可以幫助你在這裏,你可以使用一個不同的目錄,內容在修訂控制下。

http://nodejs.org/api/modules.html

根據您的胃口靈活性VS複雜,您可以考慮創建步驟,無論你留住他們,到輸出目錄(可能是「命名node_modules」,但不一定實際上覆制了你的各個節點模塊)。

+0

NODE_PATH似乎是這裏最優雅的方法。我只是可以保留lib /中的內容,並在需要時按名稱引用它們。由於環境變量是適當的文件,我不認爲它可以被視爲黑客或東西:)謝謝。 –

5

一個常見的解決方案是將模塊存儲在某個專用Git存儲庫中,然後使用URL作爲依賴關係; npm知道如何將存儲庫克隆爲依賴關係。

+0

謝謝,我對此進行了評估,但之後,我需要以某種方式授權我們的服務器訪問私有git回購站。通過服務器公鑰或ip範圍。那會工作。 –