Yarn resolutions
Yarn 支持在工程的 package.json 文件中的 resolutions
字段里指定包的特定版本或者版本范围。
使用场景
- 可能工程里的某个依赖的包A不是经常更新,但是这个包所依赖的包B有一个重要更新。这这种情况下,如果这个包A指定的依赖包B的版本范围没有覆盖到包B的最新版本的话,即重新安装依赖时,也不会安装到最新的包B,这时我们可能就要一直等待包A的作者更新了。
- 当工程里的子依赖有一个重要的安全方面的更新,并且你不想等你直接依赖的包更新时
- 当工程中某个依赖包正常运行,但是作者不再维护了。如果这个包某个依赖包有更新时,而且我们需要这个更新时。
- 当工程中某个依赖包定义了一个很大范围的版本时,如果子依赖此时更新了一个最新版本存在bug,我们想退回之前的版本时,
总的来说就是,我们希望指定工程直接依赖里的某个子依赖包的版本时,可以使用
resolutions
如何使用
在 package.json
文件中添加 resolutions
字段,在该字段下指定我们希望的版本:
package.json
1 | { |
然后执行 yarn install
。
意思是说可以直接指定依赖 d2 所依赖的 left-pad 版本为 1.1.1。可惜 npm 官方并不支持这个参数,不过 github 上有一个第三方库支持了这个功能。