当前位置:网站首页>package-lock.json 有什么作用,如果项目中没有它会怎么样,举例说明
package-lock.json 有什么作用,如果项目中没有它会怎么样,举例说明
2022-07-29 15:03:00 【紫微前端】
packagelock.json/yarn.lock 用以锁定版本号,保证开发环境与生产环境的一致性,避免出现不兼容 API 导致生产环境报错
在这个问题之前,需要了解下什么是 semver: 什么是 semver (opens new window)。
当我们在 npm i 某个依赖时,默认的版本号是最新版本号 ^1.2.3,以 ^ 开头可最大限度地使用新特性,但是某些库不遵循该依赖可能出现问题。
^1.2.3指 >=1.2.3 <2.0.0,可查看 semver checker(opens new window)
一个问题: 当项目中没有 lock 文件时,生产环境的风险是如何产生的?
演示风险过程如下:
pkg 1.2.3: 首次在开发环境安装 pkg 库,为此时最新版本1.2.3,dependencies依赖中显示^1.2.3,实际安装版本为1.2.3pkg 1.19.0: 在生产环境中上线项目,安装 pkg 库,此时最新版本为1.19.0,满足dependencies中依赖^1.2.3范围,实际安装版本为1.19.0,但是pkg未遵从 semver 规范,在此过程中引入了 Breaking Change,如何此时1.19.0有问题的话,那生产环境中的1.19.0将会导致 bug,且难以调试
而当有了 lock 文件时,每一个依赖的版本号都被锁死在了 lock 文件,每次依赖安装的版本号都从 lock 文件中进行获取,避免了不可测的依赖风险。
pkg 1.2.3: 首次在开发环境安装 pkg 库,为此时最新版本1.2.3,dependencies依赖中显示^1.2.3,实际安装版本为1.2.3,在 lock 中被锁定版本号pkg 1.2.3: 在生产环境中上线项目,安装 pkg 库,此时 lock 文件中版本号为1.2.3,符合dependencies中^1.2.3的范围,将在生产环境安装1.2.3,完美上线。
边栏推荐
猜你喜欢

基于C语言实现一个社交系统

ST表(动态规划倍增思路离线维护区间极值问题)

Why does APP use the JSON protocol to interact with the server: serialization related knowledge
![[MySQL] 运算符](/img/0b/e974cb461fc403de18545f7f9ac527.png)
[MySQL] 运算符

File management: the physical structure of files

云原生Meetup·广州站举行,共话云原生时代的企业数字化转型

CNCF Keith Chan:分布式云时代,云原生社区的发展与趋势

这个保护数据隐私的赛道,人人都想插一脚,互联网大厂挤破头,连甲方都下场自研了...

深度卷积生成对抗网络

进入中国27年,又一美妆巨头要离场
随机推荐
自动化配置SSH免密登录和取消SSH免密配置脚本
Jmeter实现多用户测试
多线程顺序运行的 4 种方法,面试随便问!
【微服务】(十六)—— 分布式事务Seata
突破性能天花板!亚信数据库支撑 10 多亿用户,峰值每秒百万交易
令人难以置信的DeepMind数据库现在包括了科学界已知的几乎所有蛋白质
观光公交题解
UFLO:5、启动任务并自动完成第一个人工任务
C语言 4:汇编语言指令介绍
PHP 读取/导出 CSV文件
文件管理:文件的物理结构
JUL 学习
【LeetCode】217. 存在重复元素
File management: logical structure
File management: the physical structure of files
[yolov7 series two] positive and negative sample allocation strategy
力扣每日一题-第45天-682. 棒球比赛
SkiaSharp 之 WPF 自绘 弹动小球(案例版)
Qt实战 | 如何获取USB设备信息?
bit field in c language