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

时间:2020-04-22 16:59:17

标签: npm package.json

我有一个React应用。 (尽管出于这个问题的目的,技术并不重要)

依赖项之一是material-ui库。

material-ui库的依赖项是react-transition-group库。

这是否意味着我可以“ npm安装” react-transition-group库,而根本不增加JS软件包的大小?

1 个答案:

答案 0 :(得分:1)

这取决于所使用的react-transition-group的版本。 npm最好只安装一个模块版本。现代的捆绑软件(Webpack / Rollup)也将尝试在捆绑软件中使用单个版本。

那么它将何时使用一个实例,何时获得2个副本?

版本范围重叠:

material-ui需要版本~1.1.0

您的package.json需要版本^1.0.0

由于这些范围重叠,因此npm可以安装与1.1.*匹配的任何版本,并且适用于两个模块,并且您将仅获得一份副本。

版本范围不重叠:

material-ui需要版本~1.1.0

您的package.json需要版本^2.0.0

由于这些范围需要不同的SemVer主版本,因此npm将安装两份副本,一份可以满足每个要求。捆绑程序还需要同时引入两个版本。

很难确切地知道子依赖项中存在什么版本,但是您可以通过在运行npm ls之后运行npm install来查看所有版本,它将显示所有已安装的软件包和版本在项目中。