NPM是否多次或仅一次尝试安装同一依赖程序包?

NPM是否多次或仅一次尝试安装同一依赖程序包?,npm,npm-install,package.json,Npm,Npm Install,Package.json,希望了解npm如何处理相同版本的重复软件包的安装 如果已经安装了相同的软件包-相同的版本,它会忽略吗 它是否再次安装/覆盖相同的软件包 例如: 包A依赖于包B和包C 其中,包B和C依赖于通用包D版本1.0 因此,在运行npm install时,它会尝试安装包D两次还是只安装一次,并且会忽略第二次出现,因为它已经存在于node_模块中?npm install算法声明依赖项将被添加到尽可能靠近顶部的位置,而不会破坏任何其他模块 在您的情况下,包B和包C都依赖于D@1.0. 由于两个依赖项之间不存在可

希望了解npm如何处理相同版本的重复软件包的安装

  • 如果已经安装了相同的软件包-相同的版本,它会忽略吗
  • 它是否再次安装/覆盖相同的软件包
  • 例如:

  • 包A依赖于包B和包C
  • 其中,包B和C依赖于通用包D版本1.0

  • 因此,在运行npm install时,它会尝试安装包D两次还是只安装一次,并且会忽略第二次出现,因为它已经存在于node_模块中?

    npm install算法声明
    依赖项将被添加到尽可能靠近顶部的位置,而不会破坏任何其他模块

    在您的情况下,包B和包C都依赖于D@1.0. 由于两个依赖项之间不存在可能的冲突,因此包D将在顶层安装一次

    对于粗略的表示,这里是您想象的原始依赖关系树

    + package A
    +-- B
       -- D@1.0
    +-- C
       -- D@1.0
    
    包A在同一顶层安装dep B和dep C。由于树中没有其他冲突版本的dep D,因此dep D也被添加到顶层,供dep B和dep C使用

    + package A
    +-- B
    +-- C
    +-- D@1.0
    

    NPM安装算法状态
    依赖项将添加到尽可能靠近顶部的位置,而不会破坏任何其他模块

    在您的情况下,包B和包C都依赖于D@1.0. 由于两个依赖项之间不存在可能的冲突,因此包D将在顶层安装一次

    对于粗略的表示,这里是您想象的原始依赖关系树

    + package A
    +-- B
       -- D@1.0
    +-- C
       -- D@1.0
    
    包A在同一顶层安装dep B和dep C。由于树中没有其他冲突版本的dep D,因此dep D也被添加到顶层,供dep B和dep C使用

    + package A
    +-- B
    +-- C
    +-- D@1.0
    

    谢谢你的确认,我希望它只能以这种方式工作。谢谢你的确认,我希望它只能以这种方式工作。