热门标签 | 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 还是不怎么了解, 暂且写下本文记录着先, 有错请指出!



推荐阅读
  • 本文介绍了如何利用npm脚本和concurrently工具,实现本地开发环境中多个监听服务的同时启动,包括HTTP服务、自动刷新、Sass和ES6支持。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 基于Node.js、Express、MongoDB和Socket.io的实时聊天应用开发
    本文详细介绍了使用Node.js、Express、MongoDB和Socket.io构建的实时聊天应用程序。涵盖项目结构、技术栈选择及关键依赖项的配置。 ... [详细]
  • 在macOS环境下使用Electron Builder进行应用打包时遇到签名验证失败的问题,具体表现为签名后spctl命令检测到应用程序未通过公证(Notarization)。本文将详细探讨该问题的原因及解决方案。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文总结了在使用Ionic 5进行Android平台APK打包时遇到的问题,特别是针对QRScanner插件的改造。通过详细分析和提供具体的解决方法,帮助开发者顺利打包并优化应用性能。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 深入解析ES6至ES8的新特性与应用
    本文详细介绍了自2015年发布的ECMAScript 6.0(简称ES6)以来,JavaScript语言的多项重要更新,旨在帮助开发者更好地理解和利用这些新特性进行复杂应用的开发。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
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社区 版权所有