我有一个React应用。 (尽管出于这个问题的目的,技术并不重要)
依赖项之一是material-ui
库。
material-ui
库的依赖项是react-transition-group
库。
这是否意味着我可以“ npm安装” react-transition-group
库,而根本不增加JS软件包的大小?
答案 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
来查看所有版本,它将显示所有已安装的软件包和版本在项目中。