乐趣区

关于javascript:前端知识点提炼四月份

1. 搞懂 peerDependencies

举个栗子🌰:

假如当初有一个工程, 曾经在其 package.json 的 dependencies 中申明了 packageA,有两个插件 plugin1 和 plugin2 他们也依赖 packageA,如果在插件中应用 dependencies 而不是 peerDependencies 来申明 packageA,那么 $ npm install 装置完之后的依赖图是这样的:

.
├── helloWorld
│   └── node_modules
│       ├── packageA
│       ├── plugin1
│       │   └── nodule_modules
│       │       └── packageA
│       └── plugin2
│       │   └── nodule_modules
│       │       └── packageA

从下面的依赖图能够看出,helloWorld 自身曾经装置了一次 packageA,然而因为因为在
plugin1 和 plugin2 中的 dependencies 也申明了 packageA,所以最初 packageA 会被装置三次,有两次装置是冗余的。
peerDependency 就能够防止相似的外围依赖库被反复下载的问题。
如果在 plugin1 和 plugin2 的 package.json 中应用 peerDependency 来申明外围依赖库,此时在主零碎中执行 $ npm install 生成的依赖图就是这样的:

.
├── helloWorld
│   └── node_modules
│       ├── packageA
│       ├── plugin1
│       └── plugin2

能够看到这时候生成的依赖图是扁平的,packageA 也只会被装置一次。

因而咱们总结下在插件应用 dependencies 申明依赖库的特点:
  • 如果用户显式依赖了外围库,则能够疏忽各插件的 peerDependency 申明;
  • 如果用户没有显式依赖外围库,则依照插件 peerDependencies 中申明的版本将库装置到我的项目根目录中;
  • 当用户依赖的版本、各插件依赖的版本之间不互相兼容,会报错让用户自行修复;
退出移动版