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