npm 5 以前 通过 package.json 里依赖不加^和~锁依赖,但是依赖的依赖这样无法锁住,需要用命令 shrinkwrap,很繁琐
yarn 因此推出 lock 可以锁所有依赖
尽管在两个人同时更新 lock 文件时 git 需要处理冲突,但是使用 lock 还是利大于弊的
package.json: "@tarojs/cli": "3.5.11"
lock: @swc/core@^1.3.23 - 1.3.74
会出现打包问题,需要锁定 @swc/core 1.3.6
以下,见 issues
所以使用 resolutions 锁住版本
注意,package.json 的 resolutions 属性在 monorepo 中需要在根目录进行限制
例如 @types/react 会跟随 react 更新,但是 react 是^17 版本的项目在 18 刚发布时,会发生 18 的类型问题
解决方法为找到对应版本的@types/react 锁定
^react17 锁定@types/react 17.0.44
使用 types:{resolutions:""}