场景:
1.RN如果更改了node_modules里面的源码,可以采用打补丁的方式固定下来。后续下载第三方插件都会自动修改的.
2.打补丁的命令:npx patch-package 模块名,会在目录生成patches目录,里面就有打好的补丁,且打补丁的第三方插件需要把版本固定为你打补丁的版本。
1.首先安装插件: npm install patch-package --save-dev (开发环境)
2.然后在package.json 中添加一个postinstall脚本,这样每次执行npm install 或者yarn install时候,补丁会自动应用。 "scripts": { "postinstall": "patch-package" }
3.找到node_modules里面的源码进行修改。 找到要修改的依赖(node_modules/example-lib/index.js), 直接修改里面的代码
4.生成补丁文件: npx patch-package example-lib 这样会在项目根目录下生成一个patch/文件夹,里面是一个.patch 文件 列如: patches/ example-lib+1.2.3.patch 这个.patch文件记录了了你对于这个库的修改。
5.锁定依赖版本 非常关键的一步:一定要锁定你打补丁的那个版本,否则升级版本后补丁可能应用失败。列如: 在package.json 中锁定精确版本。 "dependencies": { "example-lib": "1.2.3" } 不要使用 ^ 或 ~ 这样的前缀
6.验证补丁是否生效. 你可以删除node_modules 和package-lock.json文件,然后重新安装 rm -rf node_modules package-lock.json npm install
安装过程中会自动应用补丁,如果你是在postinstall脚本中配置了 patch-package 你会看到输出: patch-package Applying patches... example-lib@1.2.3
7.如果要更新补丁 再次修改node_modules/example-lib/ 重新运行npx patch-package example-lib 会覆盖原来的补丁。