2023年3月20日更新
以前的写的都没啥用,还让人困惑的很,不用看
有个直接解决的办法 :
在package.json中加一个结点:
{
"dependencies":{
....
},
...
"resolutions": {
"json5": "^2.2.3" // 比如要升级json5这个包,直接在这指定就好
}
}
配置好后再yarn
一下, 生成的 yarn.lock 文件配置如下 :
json5@^1.0.2, json5@^2.2.2, json5@^2.2.3: // 这把各个依赖放一起了,
version "2.2.3" // 统一使用这个版本
resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
----------------------------更新结束----------------------------
以下内容不用看,都是垃圾,解决不了问题
$ yarn outdated # 检测哪些包可以升级
$ yarn upgrade <package-name> --latest # 升级指定包
# 或者使用 yarn-upgrade-all 升级全部的包
$ npm install -g yarn-upgrade-all # 全局安装
$ yarn yarn-upgrade-all
需注意的是依赖的依赖没办法指定升级的,需要第一级的依赖升级了它才行
补充,近日安全检测后 需升级 terser 这个包,这个包的依赖路径是:
webpack -> terser-webpack-plugin -> terser
升级操作步骤:
- 先将webpack升级到最新版,但发现 terser-webpack-plugin 的版本还是没有升级到最新,因此手动更新了下yarn.lock的 webpack 的依赖版本
webpack@5.74.0:
version "5.74.0"
resolved "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980"
integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==
dependencies:
....
terser-webpack-plugin "^5.3.6"
....
- 删除 yarn.lock中的代码
terser-webpack-plugin@^5.1.3:
version "5.3.6"
....
terser@^5.14.1:
version "x.x.x"
....
- 执行
yarn install
- 检查 terser 的版本是否达到要求
- 如不行,则修改 terser-webpack-plugin 依赖 terser 的版本号,递归处理就行