pnpm patch

234 阅读1分钟

问题背景

我们有时候开发会遇到一个情况就是我们用的某个包有问题,但是我们又没法直接升级,因为升级之后可能面临着其他包也要跟着升级,改动较大的问题。

低版本手机要兼容

并且不光改动较大,而且很多老包在低版本手机是可以跑的,但是换了新包之后,很多用了新语法,导致在低版本手机不能支持,但是产品又要求支持这个低版本手机,所以这个时候你不能升级。

那么比较快速的方法就是在这个包上直接修改,修复这个bug。

node_modules里面无法直接修改

但是由于这个包是node_modules里面的依赖,所以本地修改是无法同步到编译环境的,因为我们提交代码的时候默认都会把node_modules里面的文件给忽略掉。

所以一个好的办法就是利用pnpm patch来实现。如果是npm管理的包可以用npm的patch-package这个patch-package来实现。

pnpm patch

pnpm patch使用也比较简单。

直接执行pnpm patch 包名。

然后会生成一个pnpm的patch文件

生成一个pnpm的patch文件

image.png

然后我们直接修改这个文件

image.png 修改完成之后,执行pnpm patch-commit 刚刚的临时路径。

patches文件夹

这样就会看见一个patches文件夹,在项目根目录下面,里面有你的修改。同时package.json和pnpm-local.yaml都会对这个patch的依赖。

这样我们就修改完成了。

提交代码即可。

image.png