npm下载了多个版本的软件包

时间:2018-09-23 20:56:20

标签: npm npm-install node-modules

在我的package.json中,添加了一个包和另一个与第一个包相关的包。依赖关系树如下所示:

@
|
+---+ A@0.0.1
|   |
|   +---+ B@^0.0.1
|
+--- B@0.0.2

由于在调用npm install之后,由于包A需要版本^ 0.0.1(带有插入号)中的B,项目也需要版本0.0.2(直接在package.json中)中的B该树将被展平为以下形式:

@
|
+--- A@0.0.1
|
+--- B@0.0.2

但事实并非如此。安装软件包后,npm在版本0.0.2的模块A的node_modules中创建一个文件夹,在版本0.0.1的模块B的node_modules中创建一个文件夹,并且在文件夹B下,它在版本0.0.1的A中创建另一个node_modules(尽管在所需版本中出现了尖号)。所以我的问题是:为什么?我想念什么吗?我是否错误地理解了插入符号和波浪号的目的?我怎样才能迫使npm使这种结构扁平化? npm dedupe没有帮助。

1 个答案:

答案 0 :(得分:1)

您的想法是正确的,但是插入符号对0的主要版本有不同的看法:它仅允许修补程序中的更新,而对于0.0.x则根本不允许更新。

例如,^0.0.3仅允许完全版本0.0.3

对于大于或等于0.1.0但小于1.0.0的版本,插入符号的行为与代字号相同,并且将允许修补程序版本具有灵活性(仅)。

例如,^0.1.3将允许从0.1.3到下一个未成年人0.2.0的所有版本。

其背后的原因是,在第一个1.0.0发行版之前,不同的补丁程序或次要版本不能保证所做的更改不会中断。

source