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类库文件,比 ...
最新文章
- 进程注入后门工具Cymothoa
- altium designer PCB把板子翻过来看
- 分类算法中常用的评价指标
- js 点击侧边栏展示内容_上海SEO优化网站侧边栏一般添加什么内容
- HP-UX的终端TERM要设置成什么,才能输入中文呢?
- 巨省显存的重计算技巧在TF、Keras中的正确打开方式
- 删除目录文件html代码,ASP创建目录、删除目录,删除文件代码范例
- 保存blob为本地文件
- 对于初学者,如何轻松学习JavaScript?
- 大数据分析如何助力企业发展
- jupyter 代码到 pycharm 的迁移
- CrossOver for Mac 怎么用?
- 软件测试类型方法步骤英语,软件测试类英文面试题
- VB6 如何添加自定义函数 模块 把代码放到一个模块中
- 测试用例设计与黑盒测试用例设计
- ##Mysql数据库DQL查询工具的使用
- oracle 增量导出 导入,Oracle增量导入导出
- 基于Nexus搭建maven私有源仓库
- c 语言指针数组长度,c如何获取指针数组的长度?
- css3倒数两个,:nth-last-child()
热门文章
- WSL2:我在原生的Win10玩转Linux系统
- 上线两天用户 10W+,这款 AI 知识图谱小程序有多牛?
- 2021 年了,算法岗位应该怎样准备面试?
- “飞天、无影、小蛮驴…”带你走进2020云栖大会
- 2020 年,你还在使用 Java 中的 SimpleDateFormat 吗?
- 50 岁程序员创业说:两个月提交 50 个 PR,三个月内融资 2000 万美元
- 中国开启开源新纪元!
- 7 个令人兴奋的 JavaScript 新特性
- 开幕倒计时3天 | 2019中国大数据技术大会(BDTC)邀您一同共赴大数据+AI盛宴!...
- 马云后悔创办阿里:想停根本停不下来;人民日报评“滴滴顺风车争议”;jQuery 曝漏洞|极客头条...