热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

npm中peerDependencies的作用

目录npm中peerDependencies的作用npm中peerDependencies的作用peerDependencies一般是给插件使用的,它的作用有以下几点:要求项目拥有

目录



  • npm中peerDependencies的作用


npm中peerDependencies的作用

peerDependencies 一般是给插件使用的, 它的作用有以下几点:



  1. 要求项目拥有peerDependencies所指定的环境依赖, 完成子环境要求父环境具有某些依赖包

  2. 提升项目(插件)依赖

  3. 减少重复安装依赖

例如: 我的项目叫 项目A , 其内部安装了一个插件叫 插件B , 插件Bpackage.json 如下:

// 插件B package.json
{
"peerDependencies": {
"vue": ">=2.6.4"
}
}

则需要我的 项目A 安装有依赖 vue@2.6.4 , 即 项目Apackage.jsonnode_modules 要是这样:

// 项目A package.json
{
"dependencies": {
"vue": "^2.6.4",
"插件B": "^1.0.0"
}
}

# 项目A 的目录结构
+---项目A
|
|
+---node_modules
+---vue
| package.json
|
+---插件B
package.json

第一点解释完成。



那疑问在于, 既然 插件B 需要 vue@>=2.6.4 , 为什么不将其放在 dependencies 中呢? 因为这样的话整个 项目A 的文件结构将是这样:

# 项目A 的目录结构
+---项目A
|
|
+---node_modules
|
|
+---插件B
package.json
+---vue
package.json

这样的意思是 插件B 的开发用到了 vue@>=2.6.4 , 而真正需要的意思是: 插件B 要在 vue@>=2.6.4 的环境中使用 , 那么第二点解释完成



还有这样情况, 项目A依赖了vue@2.6.5, 而插件B的开发需要用到vue@>=2.6.4, 此时项目A 的 package.jsonnode_modules 将是这样:

// 项目A package.json
{
"dependencies": {
"vue": "^2.6.5",
"插件B": "^1.0.0"
}
}

// 插件B package.json
{
"dependencies": {
"vue": "^2.6.4",
}
}

# 项目A 的目录结构
+---项目A
|
|
+---node_modules
+---vue
| package.json
|
+---插件B
package.json
+---vue
package.json

这样的话 项目A 会重复安装两次不同版本的 vue , 但是可以发现: 插件Bvue 的依赖版本刚好在 项目A 的范围内, 于是我们如果设置了 插件Bpackage.json 为这样:

// 插件B package.json
{
"peerDependencies": {
"vue": ">=2.6.4",
}
}

那么 插件B 将不会安装 vue 而是使用 项目A(父环境) 中的 vue , 从而减少重复安装依赖的情况, 最后 项目A插件Bpackage.jsonnode_modules 将是这样:

// 项目A package.json
{
"dependencies": {
"vue": "^2.6.5",
"插件B": "^1.0.0"
}
}

// 插件B package.json
{
"peerDependencies": {
"vue": ">=2.6.4"
}
}

# 项目A 的目录结构
+---项目A
|
|
+---node_modules
+---vue
| package.json
|
+---插件B
package.json


第三点解释完成, 本文结束



到这其实对 peerDependencies 还是不怎么了解, 暂且写下本文记录着先, 有错请指出!



推荐阅读
author-avatar
青樽有酒_585_587
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有