jestjs - 使用 Yarn 2 时如何修补 jest-rutime?
问题描述
我正在尝试按照此存储库中的说明来修补 Jest。
建议使用patch-package但我发现在使用 Yarn 2 时可以使用yarn patch 。
我设法修补了 jest-runtime,但似乎 Jest 似乎不需要jest-runtime
在它的包中,所以我不知道它是从哪里来的,将它用作声明修补文件的参考。
我知道如果 Jest 是需要修补的,我可以这样声明:
package.json
"devDependencies": {
"jest": "patch:jest@26.6.3#./patches/jest.patch"
}
我尝试使用相同的逻辑来包含以下要包含的代码,jest-runtime
但它不起作用。
"devDependencies": {
"jest": "^26.6.3",
"jest-runtime": "patch:jest-runtime@26.6.3#./patches/jest-runtime.patch"
}
如何声明这个修补的 jest-runtime 以便 Jest 可以使用它?
解决方案
清单中的Resolutions字段是声明我们没有添加到devDependencies
诸如子模块的修补模块的正确方法。
该resolutions
字段允许您指示 Yarn 使用特定的分辨率,而不是解析器通常会选择的任何分辨率。这对于强制所有包使用单个版本的依赖项或向后移植修复很有用。
该问题的修复:
{
...
"dependencies": {
"jest": "^26.6.3",
},
"resolutions": {
"jest-runtime": "patch:jest-runtime@26.6.3#./patches/jest-runtime.patch"
},
}