2017-04-14 16 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]进行更改。