2017-03-06 77 views
2

我使用了两个具有相同依赖关系的包:"aws-sdk": "^2.22.0"由不同的包共享的npm依赖关系安装了两次

当我运行npm install,两个软件包安装相同的包在自己node_modules子目录,这样的:

my_project 
    node_modules 
     package_1 
      node_modules 
       aws_sdk 
        ... 
     package_2 
      node_modules 
       aws_sdk 
        ... 
     aws_sdk 
     ... 

你会发现,我的基地项目也使用AWS-SDK所以它被安装第三时间。

我的项目单独权重小于100kb,但aws-sdk包权重〜17MB,使总大小达到〜50MB,这很荒谬。

我试过npm dedupeflatten-packages包,它没有区别。

我能做些什么来让npm只安装一次?

我使用的是Windows 10,节点7.4.0和npm 4.0.5。

回答

0

对此没有太多待做...这是如何设计模块依赖关系的。

每个模块都随其相关性一起安装。这样,如果您决定使用aws_sdk的不同版本,那么您的模块仍然可以工作,因为它们与其相应版本aws_sdk打包在一起。

例如,这与Ruby on Rails不同,其中可以在整个应用程序中使用单个版本的包(gem)。

npm可能会对它自己做一些优化,但最好是让它完成它的工作。

您可以阅读更多here