美文网首页
peerDependencies vs dependencies

peerDependencies vs dependencies

作者: 寂寞的原子 | 来源:发表于2017-07-09 23:54 被阅读850次

这几天遇到个大坑,就是在代码完全正确的情况下,配置始终不能生效。调试了好久都找不到原因,直到我抱着一丝希望去查看源码,意外发现了问题所在:

一个包被打包了两次,配置和最终运行的是不同的版本。

如果你还不了解npm的原理,可以去这里

接下来先简单介绍一下出问题的项目结构:

- A
  - B
    - C
  - C

大概就是这样:项目A中,有B和C两个依赖,其中B是一个库,B在dependencies中也依赖了C。

最初用npm安装的时候,B依赖的C和A依赖的C是同一个版本,所以得到了如下结构:

- A
  - B@1.0.0 (此处直接依赖上一层的C@1.1.0)
  - C@1.1.0

后来又一次在项目A中升级了版本,得到了如下结构:

- A
  - B@1.0.0
    - C@1.1.0
  - C@1.2.0

由于B依赖的C和A依赖的C版本不同,所以根据npm的规则,B内部也安装了一个C。

于是,打包的时候由于两个版本被认为是互不兼容的,所以会分别被打包进去。在B中调用C进行配置的时候运行的是C@^1.1.0,而A中调用C最终使用的时候运行的是C@^1.2.0,所以出现了上面所说的结果,配置始终不能生效。

发现了问题就好办了,解决方法:dependencies改成peerDependencies,这样就不会在B内部再安装一个C,而只是在版本不兼容时出现warning。

问题至此解决,总结一下:作为一个库,就不应该随便用dependencies,而应该用peerDependencies

相关文章

  • peerDependencies vs dependencies

    这几天遇到个大坑,就是在代码完全正确的情况下,配置始终不能生效。调试了好久都找不到原因,直到我抱着一丝希望去查看源...

  • PeerDependencies

    引言 本文引用自博客地址,写得很清楚。推荐! npm2中dependencies与peerDependencies...

  • peerDependencies属性

    peerDependencies的目的是提示宿主环境安装满足插件 peerDependencies所指定依赖的包,...

  • peerDependencies

    假设我们当前的项目是MyProject,项目中有一些依赖,比方其中有一个依赖包PackageA,该包的packag...

  • peerDependencies

    为什么会研究这个 peerDependencies? 因为我在我们的组的组件库的package.json中看到了这...

  • [笔记] “带你玩转VisualStudio”

    文章地址​ 文章汇总 工程结构 External Dependencies工程的外部依赖文件,这个目录是VS自动生...

  • webpack - peerDependencies WARNI

    由于之前把node.js升级到了最新版,移除原先的node_modules文件加后,重新 出现以下错误信息: pe...

  • peerdependency的作用

    探讨npm依赖管理之peerDependencies 引言 想必前端同学对npm的devDependencies和...

  • 2023-01-30 flutter dependencies和

    dependencies和dev_dependencies dependencies:应用或包依赖的其他包或插件。...

  • dependencies

    autoprefixer 处理CSS前缀问题的神器,可以同Sass,Stylus或LESS等预处理器共通使用。它适...

网友评论

      本文标题:peerDependencies vs dependencies

      本文链接:https://www.haomeiwen.com/subject/ppgehxtx.html