package.json里面定义的是版本范围(比如^1.0.0),具体跑npm install的时候安的什么版本,要解析后才能决定,这里面定义的依赖关系树,可以称之为逻辑树(logical tree)。

node_modules文件夹下才是npm实际安装的确定版本的东西,这里面的文件夹结构我们可以称之为物理树(physical tree)。

安装过程中有一些去重算法,所以你会发现逻辑树结构和物理树结构不完全一样。

package-lock.json可以理解成对结合了逻辑树和物理树的一个快照(snapshot),里面有明确的各依赖版本号,实际安装的结构,也有逻辑树的结构。

其最大的好处就是能获得可重复的构建(repeatable build),当你在CI(持续集成)上重复build的时候,得到的artifact是一样的,因为依赖的版本都被锁住了。在npm5以后,其内容和npm-shrinkwrap.json一模一样。

这些在npm官网文档都有详细解释。

最新文章

  1. ListView灵活的用法
  2. Application.AddMessageFilter(this);
  3. 使用dnspod进行简单的HTTP dns解析(防劫持)
  4. ajax get和post请求 后端接收并返回数据
  5. MVC中的几个问题汇总
  6. [转] 学习使用:before和:after伪元素
  7. JSTL解析——007——fmt标签库02
  8. SSD磁盘,CPU居高不下,高并发的情况下,是不是mysql解析器耗费的cpu资源高?
  9. Spoj 2713 Can you answer these queries IV 水线段树
  10. ZOJ Problem Set - 2563 Long Dominoes 【如压力dp】
  11. java流和文件 保存字节级数据(写)
  12. redis学习(2)--- Redis概述
  13. 线段树——codevs 1690 开关灯
  14. docker学习构建镜像---第三章节
  15. python入门(十五):装饰器
  16. 44)django-环境变量设置
  17. C#程序终止问题CLR20R3解决方法
  18. SC-FDM和OFDM的区别
  19. 【Python】京东商品价格监控
  20. Swinject 源码框架(一):基本原理

热门文章

  1. maven pom添加本地jar,不提交私库
  2. HTML学习笔记Day15
  3. (水题)P1424 小鱼的航程(改进版) 洛谷
  4. java连接数据库报了ssl连接的警告
  5. Mac 软件专题:高效率工作和学习工具软件推荐
  6. angular 中自己常用的下拉框获取值方法
  7. 图论分支-Tarjan初步-点双连通分量
  8. 1、JPA-HelloWorld
  9. Dubbo服务启动脚本
  10. 044、vloume声明周期管理(2019-03-07 周四)