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

上一篇下一篇

猜你喜欢

热点阅读