由不同包共享的npm依赖项安装两次

时间:2017-03-06 10:37:01

标签: node.js windows npm

我正在使用两个具有相同依赖关系的包:"aws-sdk": "^2.22.0"

当我运行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。

1 个答案:

答案 0 :(得分:0)

关于这一点没什么可做的......这就是node.js模块依赖的设计方式。

每个模块都随其依赖项一起安装。这样,如果您决定使用不同版本的aws_sdk,您的模块仍然有效,因为它们与相应版本的aws_sdk打包在一起。

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

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

您可以阅读更多here