一千萬個為什麽

搜索

Node.js的依賴管理如何與Maven有所不同?



奇怪的node.js不太可能maven在項目目錄中安裝軟件需要的軟件包。

有沒有辦法引入一個中央存儲庫,它也可以緩存不同版本的組件,並且可以像我們從其他生態系統中所了解的那樣,將它們建立起來。

轉載註明原文: Node.js的依賴管理如何與Maven有所不同?

一共有 1 個回答:

奇怪的node.js不太可能maven在項目目錄中安裝軟件需要的軟件包。

我沒有看到node.js和Maven上的npm之間的根本區別。在這兩種情況下,依賴項最終都會在項目目錄(npm:/node_modules ,Maven:/target )中結束。否則,您無法繼續構建軟件。 (當你運行構建系統來創建最終的構件時,它需要依賴關系。)

另外,兩者都有一個全局緩存,以避免下載已經獲取的依賴關系:在Maven中,默認緩存目錄是〜/ .m2 (在Linux和MacOS上)。對於npm,它是〜/ .npm

有沒有辦法引入一個中央倉庫,它也可以緩存不同版本的組件,並且可以像我們從其他生態系統中知道的那樣,將它們建立起來?

如果系統緩存不夠,並且您不想完全依賴公共存儲庫(npm:registry.npmjs.org,Maven:Maven Central),則可以運行自己的鏡像。例如,即使公共存儲庫已關閉,也希望能夠重建軟件。

在我之前的工作中,我們使用 Nexus 作為緩存代理和本地註冊表(用於托管只能在組織內訪問的代碼)。它支持npm(參見文檔)和Maven(參見文檔)。 (還有其他工具,但重點是兩種生態系統都可以通過一種工具來處理。)

當然,Maven和npm之間也有區別。例如,Maven也是一個完整的構建系統,而npm的範圍主要是依賴管理。 Maven還定義了構造Java項目的約定(“Maven Way”)。但是當僅僅考慮依賴性方面時,像npm這樣的Node.js的包管理器在概念上與Maven沒有太大區別。