node_modules污染我的代码库

时间:2017-04-14 03:26:02

标签: node.js npm

您好我是Node的新手,特别是依赖管理系统。在安装模块时,我发现当我编写的实际代码不是那么冗长时,我的代码库被很多依赖项覆盖。我还注意到,有时当我进行npm安装而不是将所有依赖项打包在代表模块的一个文件夹下时,我有时会下载模块依赖项并行处理并污染主文件夹。例如,我创建了一个模块,该模块可能有3个子模块,所有这些模块都由主模块使用,并且非常适合。

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安装some-module --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 个答案:

答案 0 :(得分:0)

你似乎误解了node_modules的目的。它完全属于npm(或yarn等)。它永远不会包含您自己的代码(除了您的其他单独的包,它们作为依赖项引入)。它(通常)不受版本控制;也就是说,它是.gitignored' d。在任何时候,它都应该能够完全擦除并用简单的npm install重新填充。当然,与任何事情一样,这里有更多的细微差别和不同意见,这些意见将在网上详细讨论。

有许多方法可以管理和构建自己的代码和工件。在许多情况下,它将位于项目顶部的src或可能lib目录下,与node_modules并行。在src内,有些人更喜欢按功能对代码进行分组(例如,控制器,路由器,服务),而有些人则更喜欢按照关注的区域进行分组 - 这是项目所有者决定的事情。 / p>

在任何情况下,由于node_modules从根本上不是您直接关注的问题,npm是否以分层方式组织依赖关系并不是真正的结果,如npm@2的情况一样,或以平面方式,与npm@3一样。是的,看到node_modules有100个条目或500个条目可能有点令人不安,但npm真的需要担心,并且有充分的理由进行更改与npm@3