背景
如果某个依赖包出现bug,修改依赖包的功能有几种方式
- copy源码仓库,改完后发布到私有库
- 等待仓库维护者修复
- 打补丁
接下来讲一下打补丁的方法
patch-package
patch-package可以给各种安装包打补丁以满足我们的独特的业务需求
//安装patch-package
npm i patch-package
在node_moudles改动后执行
//打补丁
npx patch-package 包名
目录下会生成patches的目录就证明补丁打成功了 package.json中添加scripts命令
{
"postinstall":"patch-package"
}
但是有个问题就是pnpm项目 执行以上步骤失败,查询后官网后发现patch-package不适用
所以pnpm项目直接使用pnpm patch
pnpm patch
// 生成包的一个修改路路径
pnpm patch <package-name><package-version>
// 生成patch目录,保存修改的diff信息
pnpm patch-commit <file-path>
例子:
// 生成包的一个修改路路径
pnpm patch axios@0.27.2
点击后打开进行修改保存,执行命令生成补丁
// 生成patch目录,保存修改的diff信息
pnpm patch-commit <file-path>
项目目录下会生成patches对应文件
并且会自动在package.json下添加
参考文章: mp.weixin.qq.com/s/FSd_g0fZh…