2017-04-14 17 views
0

你好我是新來的節點,特別是依賴管理系統。當我安裝一個模塊時,我發現當我寫的實際代碼不是那麼冗長的時候,我的代碼庫被許多依賴關係覆蓋。我也注意到,有時當我做一個npm安裝而不是打包一個文件夾下的所有依賴關係時,我會下載有時模塊依賴關係endup並行地污染主文件夾。例如,我創建了一個可能有3個子模塊的模塊,這些模塊都被主模塊使用並且很好地結合在一起。node_modules污染我的代碼庫

index.js 
node_modules 
    my_authentication_module 
    my_authorization_module 
    my_persistance_module 

然後當我安裝了AWS的獨立模塊的數量增長相當大的,所以我的代碼庫看起來像

index.js 
node_modules 
    my_authentication_module 
    my_authorization_module 
    my_persistance_module 
    aws_module_1 
    aws_module_2 
    . 
    . 
    . 
    . 
    . 
    aws_module_20 

問題

這是塞滿我的代碼,並使它看起來像這些比以往任何時候都要多。有沒有更有效的管理節點項目的方法?

次要問題

如何來跑「NPM安裝一些模塊--save」並不所有模塊的依賴的限制到一個文件夾?或者是否有這樣做的方法,以便如果某些包需要50個包,則最終不會得到50個與需要它們的包並行的包。

例如。相反的:

node_modules 
    my_authentication_module 
    my_authorization_module 
    my_persistance_module 
    aws_module_1 
    aws_module_2 
    . 
    . 
    . 
    . 
    . 
    aws_module_20 

這將是很好得到

node_modules 
    my_authentication_module 
    my_authorization_module 
    my_persistance_module 
    aws 
     node_modules 
      aws_module_1 
      aws_module_2 
      . 
      . 
      . 
      . 
      . 
      aws_module_20 

所以至少導航到頂層,你可以很容易地看到那裏有隻真正3感興趣的模塊整齊地擠滿了一堆AWS依賴到一個文件夾中。有這樣的可能嗎?

+1

你要求的是npm在2.x版本中的表現如何。不必要的嵌套引起了各種問題,所以他們在3.0.0版本中改變了算法。我不相信這種行爲是可配置的。 – mscdex

+0

我不明白'node_modules'中的東西是如何「污染你的代碼庫」或「混亂」你的代碼的。他們只是坐在那裏,不會傷害任何人,你基本上不需要擔心他們,甚至看他們。如果你想查看依賴關係結構,請嘗試'npm ls'。你可以閱讀更多關於[這裏](https://github.com/npm/npm/issues/9809)。 – 2017-04-14 04:00:37

+0

@torazaburo如果你認爲這在node/npm領域是正常的,那麼我不介意。但它不是真的,不必擔心他們或看他們。我只能想象如果我使用Maven或Gradle時我的代碼看起來像什麼,並且每個底層JAR都將其類放到我的源代碼中,而不是放在lib目錄中....如果這是正常的,則在NPM使用中,那麼我會適應,但我想確定這不是我濫用NPM或package.json不正確。 –

回答

0

你似乎誤解了node_modules的目的。它只有npm(或yarn等)的省份。它永遠不會包含你自己的代碼(除了你的其他獨立軟件包,它們是作爲依賴項引入的)。它(通常)不受版本控制;那就是,它是.gitignored'd。在任何時候,它都應該能夠完全擦除並用簡單的npm install重新填充。當然,如同任何事情一樣,這裏有更多的細微差別和不同的觀點,這些觀點將在網絡上詳細討論。

有很多方法可以管理和構建自己的代碼和工件。在許多情況下,它將在src或可能lib目錄下的項目頂部,並行到node_modules。在src之內,有些人喜歡按功能(例如,控制器,路由器,服務)對代碼進行分組,而另一些人則傾向於按照關注的區域進行分組 - 這是項目所有者決定的事情。

在任何情況下,由於node_modules根本不是你的直接關注,它是沒有真正的後果是否npm組織在分層方式的依賴,因爲是用的情況下[email protected],或在平時裝,與[email protected]的。是的,看到一個node_modules有100個條目或500個可能有點令人不安,但這確實是npm需要擔心的問題,並且有很好的理由使用[email protected]進行更改。