npm依赖管理peerDependencies
npm中dependencies与peerDependencies区别
假设我们当前的项目是MyProject,项目中有一些依赖,比方其中有一个依赖包PackageA,该包的package.json文件指定了对PackageB的依赖:
{"dependencies": {"PackageB": "1.0.0"}
}
如果我们在我们的MyProject项目中执行npm install PackageA, 我们会发现我们项目的目录结构会是如下形式:
MyProject
|- node_modules|- PackageA|- node_modules|- PackageB
那么在我们的项目中,我们能通过下面语句引入"PackageA":
var packageA = require('PackageA')
但是,如果你想在项目中直接引用PackageB:
var packageA = require('PackageA')
var packageB = require('PackageB')
这是不行的,即使PackageB被安装过;因为Node只会在“MyProject/node_modules”目录下查找PackageB,它不会在进入PackageA模块下的node_modules下查找。
所以,为了解决这个问题,在MyProject项目package.json中我们必须直接声明对PackageB的依赖并安装。
但是,有时我们不用在当前项目中声明对PackageB的依赖就可以直接引用,为什么在项目中不用声明就可以直接使用呢?这就不得不说说peerDependencies的作用了。
于是peerDependencies就被引入了。例如上面PackageA的package.json文件如果是下面这样:
{"peerDependencies": {"PackageB": "1.0.0"}
}
那么,它会告诉npm:如果某个package把我列为依赖的话,那么那个package也必需应该有对PackageB的依赖。
也就是说,如果你 npm install PackageA,你将会得到下面的如下的目录结构:
MyProject
|- node_modules|- PackageA|- PackageB
总结一句话,peerDependencies的具体作用:
peerDependencies的目的是提示宿主环境去安装满足插件peerDependencies所指定依赖的包,然后在插件import或者require所依赖的包的时候,永远都是引用宿主环境统一安装的npm包,最终解决插件与所依赖包不一致的问题。
npm依赖管理peerDependencies相关推荐
- install npm 到某个文件下执行_你可能不知道的 npm 依赖管理那些事
点击上方蓝字关注我们 npm 是 Node.js 默认的.以 JavaScript 编写的包管理工具,如今,它已经成为世界上最大的包管理工具,是每个前端开发者必备的工具.不知你是否遇到过下面问题: 哎 ...
- npm依赖管理java_探讨npm依赖管理之peerDependencies
引言 想必前端同学对npm的devDependencies和dependencies都比较熟悉,但是对peerDependencies可能就有点陌生,尤其是没有写过npm包插件的同学,比如之前使用gr ...
- nodejs Yarn替代npm的包管理——快速、安全、可靠性高的依赖管理
Yarn能帮你解决的五件事 转自: http://www.qingpingshan.com/jb/javascript/185590.html 长话短说(TL;DR):在 JavaScript 领域有 ...
- npm升级依赖包_Taro跨端开发之依赖管理
昨天跑的好好项目,今天跑不起来 我们在开发周期比较长的前端项目的时候,必然会遇到依赖管理的问题. 我们在开发项目的时候,我们用了大量的三方库.这些三方的依赖库时不时的会更新自己的代码. 第三方依赖库的 ...
- 如何使用NPM来管理你的Node.js依赖
作者 马士华 发布于 2011年12月7日 | 4 讨论 npm 是 Node.js 的模块依赖管理工具.作为开发者使用的工具,主要解决开发 Node.js 时会遇到的问题.如同 RubyGems 对 ...
- 用CocoaPods做iOS程序的依赖管理
CocoaPods 简介 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如 Java 语言的 Maven,nodejs 的 npm.随着 iOS 开发者的增多,业界也出现了为 iOS 程序提供 ...
- Composer PHP依赖管理
对于现代语言而言,包管理器基本上是标配.Java有Maven,Python有pip,Ruby有gem,Nodejs有npm.PHP的则是PEAR,不过PEAR坑不少: 依赖处理容易出问题 配置非常复杂 ...
- es6 依赖循环_探索 JavaScript 中的依赖管理及循环依赖
我们通常会把项目中使用的第三方依赖写在 package.json 文件里,然后使用 npm .cnpm 或者 yarn 这些流行的依赖管理工具来帮我们管理这些依赖.但是它们是如何管理这些依赖的.它们之 ...
- 90.bower解决js的依赖管理
转自:https://blog.csdn.net/u011537073/article/details/52951122 前言 一个新的web项目开始,我们总是很自然地去下载需要用到的js类库文件,比 ...
最新文章
- 化学博士6次投毒同事,只因对方给自己安排工作太多....
- 双系统装完只能u盘启动_苹果电脑安装双系统,切换MacOx系统和Windows系统!
- Bzoj4016/洛谷P2993 [FJOI2014] 最短路径树问题(最短路径问题+长链剖分/点分治)
- SpringMVC学习(六)——Spring四种方式整合MyBatis
- zTree使用技巧与详解
- MySQL怎么存base64编码_MySQL中如何将字符串转为base64编码?
- c++基础(part1)--cpp简介
- php 登陆信息 传递,PHP传递POST信息
- cocos html5 一直在加载失败,项目进行中的小问题-0426-【Cocos2d-html5】初识Cocos2d-html5-一些移动端浏览器的兼容性Bug_169IT.COM...
- html表单验证用正则表达式,JavaScript 使用正则表达式进行表单验证的示例代码
- 常用的Opencv函数汇总(持续更新...)
- 说人话很难。。。。。。
- scipy —— 丰富的子包(io、cluster)
- css 怎么设置盒子水平居中,用一段css实现盒子垂直水平居中方法(8种)-案例
- win7_32下编译FFmpeg
- 易筋SpringBoot 2.1 | 第廿四篇:SpringBoot访问Docker中的MongoDB
- 微信小程序 弹出确定取消框
- 俺的web课设大作业
- QT for Android 修改图标与名称
- 好玩的读心术猜数字游戏
热门文章
- 小霸王被申请破产重整;虎牙员工自曝被HR抬出公司;Office 2010被微软终止服务|极客头条
- 图解 | 看完这篇还不懂高并发中的线程与线程池,你来打我!
- 两万字长文读懂 Java 集合!
- Java 稳步成长、Kotlin 崛起、Go 保持独特风格,2020 年各大编程语言发展趋势一览...
- 巨杉数据库 v5.0 Beta 正式发布!
- 一文足以了解什么是 Java 中的锁
- 贯穿 C++ 11 与 C++ 17 的 Lambda 到底是个什么?
- 当 Python 中混进一只薛定谔的猫……
- 代码只要写得多,就能成为顶尖的架构师?
- 重磅发布 | 蚂蚁金服与电子标准院达成战略合作 共同推进数据安全行业的标准化...