NPM - 安装子依赖会不会增加软件包捆绑包的大小?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NPM - 安装子依赖会不会增加软件包捆绑包的大小?相关的知识,希望对你有一定的参考价值。

我有一个React应用。(虽然就这个问题而言,技术并不重要)

其中一个依赖关系是 material-ui 库的依赖关系。

的依赖性。material-ui 图书馆是 react-transition-group 库。

这是否意味着我可以 "npm安装 "这个 react-transition-group 而完全不增加我的JS bundle的大小?

答案

这将取决于 react-transition-group npm会尽力只安装一个模块的单一版本。现代的捆绑器(WebpackRollup)也会尽量在捆绑器里面使用单一版本。

那么它什么时候会使用单例,什么时候会得到2个副本呢?

版本范围是重叠的。

material-ui 需要版本 ~1.1.0

您的 package.json 需要版本 ^1.0.0

因为这些范围是重叠的,所以npm可以安装任何符合以下条件的版本。1.1.* 并且它将适用于两个模块,你将只得到1份。

版本范围不重叠。

material-ui 需要版本 ~1.1.0

您的 package.json 需要版本 ^2.0.0

由于这些范围需要不同的SemVer主要版本,所以npm会安装两个副本,一个来满足每个需求。捆绑程序也需要同时引入这两个版本。

很难准确地知道子依赖中存在的版本,但是你可以通过运行 npm ls 运转后 npm install 它将显示你在项目中安装的所有包和版本。

以上是关于NPM - 安装子依赖会不会增加软件包捆绑包的大小?的主要内容,如果未能解决你的问题,请参考以下文章

SBT 中的排序和覆盖任务

查找已安装 npm 包的版本

查找已安装 npm 包的版本

查找已安装 npm 包的版本

package.json与package-lock.json的区别

修复安装 NPM 包的上游依赖冲突