npm 依赖解决方案

假如有三个模块:A,B,C。A requires B at v1.0,然后C也需要B,但是版本时v2.0.如下图


npm3试图减轻这种嵌套导致的深层关系和冗余。npm3尝试通过扁平的方式安装一些第二依赖(依赖的依赖),在相同的目录作为主要需要的依赖。

下面是主要不同的关键:

  • 在目录结构里不再预测类型(primary,secondary等等)依赖
  • 依赖解决方案取决于安装顺序,或者安装的顺序会改变node_modules目录树结构

例子 - Github上的

假如有一个模块,A需要B


现在,我们创建一个应用需要模块A
npm install,npm v3会安装模块A和它的依赖module B,扁平的/node_modules目录
在npm v2里是一种嵌套的方式:

然后,我们需要另一个模块C,C需要B,但是是另一个版本。

但是,B v1.0已经是顶级依赖,我们不能再将B v2.0作为顶级依赖。npm v3会默认的使用npm v2d的方式,将新的使用嵌套方式,模块B依赖会在需要它的模块之下,这个例子里,在模块C下:

在终端里,看起来是这样的:

使用npm ls可以列出依赖和他们的关系:

如果只想查看主要的依赖,使用:

npm ls --depth=0
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,692评论 25 709
  • 题目1: 如何全局安装一个 node 应用? Node模块采用npm install命令安装。 每个模块可以“全局...
    萧雪圣阅读 1,810评论 0 1
  • 1. 如何全局安装一个 node 应用? 在终端输入npm install -g pkg pkg为安装包的名字pk...
    _李祺阅读 235评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,280评论 19 139
  • 有服章之美谓之华 仪式感这种的东西,说来神奇,譬如每周一升国旗唱国歌,譬如生日许愿等等,确实会让你有一更深的体悟和...
    3241e5921091阅读 1,214评论 0 2