使用pnpm为同版本别名依赖配置补丁 解决补丁未应用报错
问题:pnpm中为别名依赖打补丁失败的解决办法
在使用pnpm时,需通过package.json管理两个同版本的依赖(其中一个用别名),要求给别名依赖打补丁,另一个保持原样。当前的package.json配置如下:
{ "name": "examples-valid-misc", "dependencies": { "jsii-code-samples": "1.7.0", "jsii-code-samples-gz": "npm:jsii-code-samples@1.7.0" } }
尝试给别名依赖jsii-code-samples-gz应用补丁时,出现错误:
ERR_PNPM_PATCH_NOT_APPLIED The following patches were not applied: jsii-code-samples-gz
解决步骤
生成对应别名的补丁文件
不要手动配置patchedDependencies,直接用pnpm的补丁命令针对别名依赖操作:pnpm patch jsii-code-samples-gz执行命令后pnpm会打开临时目录,修改需要调整的代码,保存并关闭编辑器后,pnpm会自动生成补丁文件,并更新
package.json的配置。确认补丁配置的正确性
手动配置时需要注意:patchedDependencies中要填写原包名,但补丁文件名要关联别名以区分。pnpm自动生成的配置会类似如下,这样能确保补丁只作用于别名依赖:{ "name": "examples-valid-misc", "dependencies": { "jsii-code-samples": "1.7.0", "jsii-code-samples-gz": "npm:jsii-code-samples@1.7.0" }, "patchedDependencies": { "jsii-code-samples@1.7.0": "patches/jsii-code-samples-gz@1.7.0.patch" } }重新安装依赖生效补丁
执行pnpm install,pnpm会识别别名对应的原包,并为其应用指定的补丁文件。
内容的提问来源于stack exchange,提问作者hyrax
相关产品推荐
相关产品推荐

