我正在使用两个具有相同依赖关系的包:"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 dedupe
和flatten-packages
包,但没有区别。
如何让npm只安装一次?
我正在使用Windows 10,节点7.4.0和npm 4.0.5。
答案 0 :(得分:0)
关于这一点没什么可做的......这就是node.js
模块依赖的设计方式。
每个模块都随其依赖项一起安装。这样,如果您决定使用不同版本的aws_sdk
,您的模块仍然有效,因为它们与相应版本的aws_sdk
打包在一起。
这与Ruby on Rails
不同,例如,可以在整个应用程序中使用单个版本的包(gem)。
npm
可能会对它自己进行一些优化,但最好让它完成它的工作。
您可以阅读更多here。