如果是 node_modules 下的三方模块
使用 patch-package
工具即可
Step1:安装
注意只在 dev 下生效即可
1 | yarn add patch-package --dev |
Step2:创建补丁
- 修改
node_modules
下的三方代码 - 根目录下执行以下代码即可创建 patches 补丁文件夹,其中 TargetPackageName 为你要修改的三方模块的名字
1 | npx patch-package TargetPackageName |
Step3:添加自动化脚本
package.json 的 scripts 中添加代码 "postinstall": "patch-package"
,最终效果如下图
1 | { |
Step4:提交到 Git
将 patches 文件夹和 package.json 的修改提交到 Git 即可
如果该模块在 Pods 下但不在 node_modules
使用 cocoapods-patch 工具
Step1:安装
Gemfile 中添加
1 | gem 'cocoapods-patch' |
然后执行
1 | bundle install |
Step2:创建补丁
pod install 后,修改 Pods 中三方模块的代码
然后创建补丁
1 | pod patch create XXX |
Step3:自动应用补丁
在 Podfile 中添加
1 | plugin 'cocoapods-patch' |
这样,每次执行 pod install
后,都会自动应用补丁
注意事项
- patch 文件可能含有 .DS_Store 文件,需要手动删除
- 自测补丁的时候,如果 patch 文件有多个补丁,Pods 源码需要同时删除所有补丁再应用才能成功。也就是说,如果一个库有多个补丁,只要一个应用出错,那么这个库的所有补丁都不会生效