#锁定依赖版本

npm 5 以前 通过 package.json 里依赖不加^和~锁依赖,但是依赖的依赖这样无法锁住,需要用命令 shrinkwrap,很繁琐

yarn 因此推出 lock 可以锁所有依赖

尽管在两个人同时更新 lock 文件时 git 需要处理冲突,但是使用 lock 还是利大于弊

#不提交 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:""}