2017-06-30 31 views
1

我試圖實現與碼頭工人開發人員的工作流程,以發展下線的能力(如,不必運行npm install當您對具有不同的依賴性分支機構之間進行切換)發展的NodeJS離線搬運工

的最直觀的方法是將依賴關係存儲在源代碼管理中。這有它自己的問題,尤其是在使用編譯依賴關係的模塊時。我已經試過幾乎所有我能想到的,發現:

  • npm pack荷蘭國際集團我的項目的依賴,在源存儲但這並不存儲我的依賴的依賴
  • 存儲源node_modules,複製此到容器運行npm rebuilddoesn't actually trigger a rebuild
  • 運行npm install --no-registry因此T觸發重建,但不嘗試調用出來,但它實際上調用了公衆註冊表反正
  • 其他解決方案我見過像Node-PAC似乎拋棄
  • npmbox看起來最有前途,但它要求將其安裝在全局目標上,除非我們開始在生產環境中部署容器,否則它將在可構建但不能生產的容器中工作。

這是徒勞的努力嗎?缺少網絡訪問非常罕見,只有在安裝新模塊或在具有不同依賴關係的修訂之間移動時才需要。

+0

雖然我不涉及需求(我使用Canonical的Juju Local容器實現爲本地開發容器運行),這裏有一個想法:自node_modules是一個臨時的gitignored文件夾,爲什麼不創建任何分支的所有依賴關係的集合,並將它們存儲在項目的package.json文件的devDependencies中。這樣,所有node_modules都可用於任何正在切換到的分支。 *警告:如果您在分支機構中擁有並行版本的NPM模塊,這將不起作用* – SylonZero

+0

這是我將來預見的問題的一部分:在這種假設情況下,可能的情況是依賴項的版本會在關閉修訂版。 – BrDaHa

回答

1

另一種方法是設置專用npm存儲庫並將其配置爲緩存公共存儲庫。有幾個選項來實現這一點,我會建議嘗試Nexus:https://www.sonatype.com/nexus-repository-oss

+0

是的,我已經有了這個,但是提出的方案是「如果我在飛機上,想要在分支之間切換?」),儘管我真的開始覺得它是這樣一個角落的情況下,它不值得追求 – BrDaHa

+0

我很抱歉沒有足夠的精確度,但我建議你在你的筆記本電腦上設置一個私人回購。:)這樣你就可以在任何地方都得到所有需要的回扣 – vsenko

+0

經過一番思考,我認爲你是對的,這可能是以不需要在源代碼中存儲二進制blob或顯着調整npm的方式實現它的唯一方法。我確實發現了這個名爲local-npm的模塊,它似乎可以完成這項工作,並且啓動速度比sonatype快 – BrDaHa