npm 和yarn 同时使用导致的bug
2023-07-12 本文已影响0人
qjsxq
在对一个新接手的老项目接入Sentry的时候,项目里面同时package.lock.json和yarn.lock。我用npm install 安装的Sentry相关依赖,没有问题。但是生产发布时却出现了element-plus组件的一些问题,比如el-dialog 的header消失,el-input-number输入1.03时,默认变成1.3。一开始以为是sentry和element-plus产生冲突导致的,最后发现是element-plus本身的问题。但是之前为什么没有问题呢,因为生产发布一值用的yarn,而且yarn.lock之前锁定的element-plus版本一直是2.2.9。但是这次发版之后发现element-plus变成了2.2.0,版本突然降的原因是因为package.lock.json里面锁定的版本是2.2.0,而且在使用npm install 的时候,yarn.lock文件内容会自动同步package.lock.json里的内容,反之不会,这就导致了yarn.lock文件锁定的element-plus版本变成了2.2.0,而element-plus版本本身是有问题的。
解决:在package.json 里面使用
"engines": {
"npm": "please-use-yarn",
"yarn": ">= 1.19.1",
"node": ">= 12.5.0"
},
同时创建.npmrc 内容为
engine-strict=true
来控制 当安装依赖或者install时只能使用 yarn 或者只能使用npm