dependency和devDependency的区别

package-a

--- package-b (dependency)

--- | --- package-c (devDependency)

--- | --- package-cc (dependency)

--- package-d (devDependency)

--- | --- package-e (dependency)

npm install后,package-b、package-d、package-cc,package-e 会被安装,其它不会被安装。

npm install --production后,package-b、package-cc 会被安装。其它不会被安装。

> npm install react --save  // 做为 dependencies 安装
> npm install eslint --save-dev // 做为 devDependencies 安装

peerDependencies

package-a

--- package-b (dependency)

--- | --- package-c (dependency)

--- package-c (dependency)

在npm1和npm2中,npm install后,会有两次package-c的下载和安装。

package-b的package.json,设定peerDependencies为package-c后,会只下载和安装一次package-c。

在npm3中,依赖树扁平化,peerDependencies中声明的依赖不会被npm自动安装,而是输出warning日志。

optionalDependencies

npm install optionalDependencies指定的包失败后,依然能继续安装。

bundleDependencies(bundledDependencies)

一个包含了包名称的数组,这些包会在发布一起被打包

Bundled dependencies 应该在您的项目中。该功能基本上与正常的dependencies相同。当运行yarn pack时,它们也会被打包

正常的dependencies通常从npm的registry中安装。Bundled Dependencies在正常的dependencies不足的情况下很有用:

当您想重新使用不是来自npm registry或者被修改的第三方库时

当您想重新使用您自己的项目作为模块时

当您想要分发一些文件和您的模块时

实用策略

  1. 升级到NPM3,保持依赖树扁平化
  2. 固定模块版本号,不使用~,^,<,>这些不确定的版本标识符
  3. 不用peerDependencies

参考链接:

http://javascript.ruanyifeng.com/nodejs/packagejson.html

https://github.com/SamHwang1990/blog/issues/7

http://yarnpkg.top/DependencyType.html

https://segmentfault.com/a/1190000008398819

最新文章

  1. iOS常用开发技巧
  2. java 8种基本数据类型的默认值及所占字节数
  3. [deviceone开发]-企业OA项目开源分享
  4. js的Array的map和sort实现方法
  5. vi/vim初步接触
  6. How to get URL parameters with Javascript?
  7. PHP 错误与异常 笔记与总结(4)通过 trigger_error 触发 PHP 错误
  8. click 绑定(二)带参数的click 事件绑定
  9. ipad iphone 开发的应用,加一个启动预览图片
  10. 修改 myeclipse8.5 servlet 模板
  11. Activity组件的UI实现
  12. linux之SQL语句简明教程
  13. 基于opencv在摄像头ubuntu根据视频获取
  14. jquery跨域请求数据
  15. iOS开发实战-卫P嗯上网项目
  16. iOS学习——获取当前最顶层的ViewController
  17. MVC、MVP、MVVM 模式对比
  18. oracle ORA-00119, ORA-00132问题解决
  19. Linux(以centos7为例)下自动挂载NTFS硬盘
  20. L2-002. 链表去重(数组模拟)

热门文章

  1. pyspider操作千万级库,pyspider在对接量级较大库的策略
  2. python 之xml.etree.ElementTree
  3. ELK学习笔记之F5 DNS可视化让DNS运维更安全更高效-F5 ELK可视化方案系列(3)
  4. python使用super()调用父类的方法
  5. Windbg解决系统蓝屏
  6. P2114 [NOI2014]起床困难综合症(二进制)
  7. P4316 绿豆蛙的归宿(期望)
  8. Java泛型中的标记符
  9. 写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)
  10. AnswerOpenCV(0826-0901)一周佳作欣赏