如何修改依赖包的功能

155 阅读1分钟

背景

如果某个依赖包出现bug,修改依赖包的功能有几种方式

  1. copy源码仓库,改完后发布到私有库
  2. 等待仓库维护者修复
  3. 打补丁

接下来讲一下打补丁的方法

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不适用

image.png

所以pnpm项目直接使用pnpm patch

pnpm patch

// 生成包的一个修改路路径
pnpm patch <package-name><package-version>

// 生成patch目录,保存修改的diff信息
pnpm patch-commit <file-path>

例子:

// 生成包的一个修改路路径
pnpm patch axios@0.27.2

image.png

点击后打开进行修改保存,执行命令生成补丁

// 生成patch目录,保存修改的diff信息
pnpm patch-commit <file-path>

项目目录下会生成patches对应文件

image.png

并且会自动在package.json下添加

image.png

参考文章: mp.weixin.qq.com/s/FSd_g0fZh…

www.jianshu.com/p/2f3856397…

zhuanlan.zhihu.com/p/656735158

github.com/ds300/patch…