【发布时间】:2020-04-22 16:59:17
【问题描述】:
我有一个 React 应用程序。 (尽管就这个问题而言,技术并不重要)
其中一个依赖项是material-ui 库。
material-ui 库的依赖项是 react-transition-group 库。
这是否意味着我可以“npm install”react-transition-group 库而不增加我的 JS 包的大小?
【问题讨论】:
标签: npm package.json
我有一个 React 应用程序。 (尽管就这个问题而言,技术并不重要)
其中一个依赖项是material-ui 库。
material-ui 库的依赖项是 react-transition-group 库。
这是否意味着我可以“npm install”react-transition-group 库而不增加我的 JS 包的大小?
【问题讨论】:
标签: npm package.json
这取决于所使用的react-transition-group 的版本。 npm 最好只安装一个模块的一个版本。现代捆绑器(Webpack/Rollup)也将尝试在捆绑包中使用单个版本。
那么它什么时候会使用单个实例,什么时候会得到 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 install 后运行npm ls 来查看它们,它将显示项目中安装的所有包和版本。
【讨论】: