代码之家  ›  专栏  ›  技术社区  ›  Flion

在我使用插入符号时,npm会安装具有不同补丁版本的两个模块版本

  •  0
  • Flion  · 技术社区  · 7 年前

    My projects package.json

    dependencies: {
        A: "^0.0.2",
        B: "^0.0.1"
    }
    

    dependencies: {
        A: "^0.0.1",
    }
    

    当我跑的时候 nmp install 对于我的项目,它安装模块A两次。一旦进入顶层(版本0.0.2) 一次嵌套在模块B中

    project/node_modules/A                   <--0.0.2
    project/node_modules/B/node_modules/A    <--0.0.1
    

    在两个package.json文件中。那么,为什么即使我重新安装模块B,它也不使用模块A的顶级安装,而不是获得模块A的嵌套版本?

    毕竟,, A@^0.0.1 A@0.0.2 正确的?

    0 回复  |  直到 7 年前
        1
  •  1
  •   Community Mohan Dere    6 年前

    这是按设计的。看到这个答案了吗

    npm install with ^ dependency instead of exact match

    当包的版本以0开头时,它被视为处于开发阶段,并且语义版本控制规则不同。当版本为0.0.X时,这两个数字中的任何一个的增加都可能会有突破性的变化。你可以在这里看到规则。

    插入符号范围^1.2.3^0.2.5^0.0.4

    当您增加次要版本时,您可能会看到插入符号,但它也有前面提到的特殊规则。”当您增加主版本时,“正常”规则开始应用。

    您还可以查看以下页面,了解更多详细信息

    https://docs.npmjs.com/misc/semver#caret-ranges-123-025-004

    ^0.0.3 := >=0.0.3 <0.0.4 ,这意味着 ^0.0.X 0.0.X