我們的應用程序由兩部分組成:API和客戶端。兩者都是獨立的Node應用程序儘管API除了文檔之外還沒有真正的前端組件,它們仍然共享一些常見文件,例如Jade組件,規範化CSS,實用程序模塊以及Mongoose的模式定義,這些模式定義用於MongoDB交互。我真的不想習慣於我首先對API進行更改的工作流程,然後將更改後的文件複製到客戶端,反之亦然,因此找到可行的解決方案非常有用。在節點應用程序之間共享代碼
跨Node應用程序共享各種代碼的最佳方式是什麼?
在瀏覽網頁時,我遇到了一些解決方案,但在這種情況下它們都不起作用。
一個解決方案是使公共文件中的節點模塊與使用NPM的應用程序保持同步,但這意味着我(以及未來可能的開發人員)必須知道哪些文件是公共模塊的一部分,並要求他們使用require('node_modules/mongo/schemas/example.js')
而不是require('mongo/schemas/example.js')
。由於假設可能有數百個通用文件,因此不可能記住文件是否通用,特別是對於新開發者。
另一種解決方案是製作公用模塊的git子模塊。這將是完美的,只要我能夠將子模塊路徑包含到節點的所需路徑中,以防萬一在預期位置找不到所需文件(例如,mongo/schemas/example.js
),它就會顯示在公共子模塊(common/mongo/schemas/example.js
)中。這會很棒,因爲它會允許用「本地」版本覆蓋一個公共文件。這有點像Magento的作品。這裏的問題是Node不允許編輯require路徑(至少,假設它可能在Node 0.5之前),所以這是一個無賴。
第三種解決方案是將公共存儲庫的內容粗暴地合併到應用程序的根目錄中。在這個解決方案中沒有真正不可逾越的問題,但我覺得這是一種不好的做法。畢竟,它將無法通過應用程序編輯通用文件,因爲無法將通用文件選擇性地推送到通用的git存儲庫。所以基本上這個解決方案只會使工作流程變得更乏味:對公用文件的所有修改都必須手動複製到公共代碼庫,然後推送到git remote,然後複製到其他應用程序。所以這個解決方案對我來說絕對不會削減它。
看來,第二個解決方案是我唯一的(也是最好的)選項,除非你們提出了一個更好的選擇(我真的很希望:D)。如果有人知道改變節點需求路徑的方式,我將非常感激。
優秀的問題。我聽到有人說你應該把所有的代碼放在npmjs.org中。但是,只有你可以開源纔可行。你可以製作私人npm回購,但我從來沒有這樣做過。 http://stackoverflow.com/questions/7575627/can-you-host-a-private-repository-for-your-organization-to-use-with-npm – Jess