如何给node_module中的包打补丁?

项目中遇到个问题,需要修改源码才能解决

现在一般如下解决方案:

  1. fork别人的代码到自己仓库,修改后,从自己仓库安装这个插件。
  2. 下载别人代码到本地,放在src目录,修改后手动引入。
  3. 提issue或者mr,等待作者修改

这三种方案都比较暴力以及繁琐,都不是最优解

最优解:patch-package

1.安装patch-package

npm install patch-package --save-dev

或者

yarn add patch-package postinstall-postinstall(npm安装不需要postinstall-postinstall依赖)

2.修改package.json文件,增加命令

 "postinstall": "patch-package"

3.修改node_modules中源码 

稍后举有栗

4.手动执行命令创建补丁文件

npx patch-package package-name

至此: 补丁文件生成了,根目录下面会多一个文件夹:patches

文件下面是以package-name + version 命名的文件

例子说明:鲁大师源码来一波

这里修改loadsh.cloneDeep

使用cloneDeep

 找到cloneDeep在node_modules中的源码部分并修改

 页面呈现

 

开始打补丁 

运行`npx patch-package lodash`

 出现这句话就说明打补丁成功了

查看补丁

根目录下面多出一个文件夹

 还原源码修改

 npx patch-package

 源码还原之后,发现我们添加的输出依然存在,说明我们给鲁大师补丁成功了

至此:就是给源码打补丁

注意:

patch是锁定版本号的,如果升级了版本,patch内容将会失效,所以要锁定package.json中的版本号。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

superTiger_y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值