如何在npm install时忽略修改后的react-native-push-notification包并推送到Git?
解决npm install覆盖自定义修改包的问题 + Git托管方案
我来给你几个实用的方案,既能阻止npm覆盖你的修改,又能把自定义版本托管到Git上,你可以根据自己的修改规模选择:
方案1:用patch-package打补丁(推荐小修改场景)
这个工具专门用来给第三方包打局部补丁,不用整个替换包,非常适合小范围的修改:
- 第一步:安装patch-package到开发依赖
npm install patch-package --save-dev - 第二步:修改
node_modules/react-native-push-notification里的代码到符合你的需求 - 第三步:生成补丁文件
执行完后,项目根目录会多出一个npx patch-package react-native-push-notificationpatches文件夹,里面的.patch文件就是你的修改记录 - 第四步:配置自动应用补丁
在package.json的scripts里添加一行:
这样每次执行"scripts": { // ... 其他脚本 "postinstall": "patch-package" }npm install后,补丁会自动被应用,不会被原始包覆盖 - 第五步:把补丁文件提交到Git
直接把patches文件夹加入Git提交,其他人拉取代码后执行npm install也能自动拿到你的修改
方案2:将修改后的包作为本地依赖(适合不想维护独立仓库的场景)
如果你的修改比较大,或者不想用补丁工具,可以把整个修改后的包放到项目本地:
- 第一步:在项目根目录创建一个
packages文件夹,把修改好的react-native-push-notification整个文件夹复制进去 - 第二步:修改项目的
package.json,把依赖指向本地路径:"dependencies": { // ... 其他依赖 "react-native-push-notification": "file:./packages/react-native-push-notification" } - 第三步:执行
npm install确认依赖生效,这时候npm会使用本地的包,不会从远程拉取原始版本 - 第四步:把
packages文件夹提交到Git,这样整个自定义包就跟着项目一起托管了
方案3:Fork原仓库并托管自己的版本(适合长期维护自定义修改的场景)
如果你的修改需要长期迭代,或者想和团队共享这个自定义版本,Fork原仓库是最好的选择:
- 第一步:在GitHub/GitLab上fork官方的
react-native-push-notification仓库到你自己的账号下 - 第二步:克隆你自己的仓库到本地:
git clone https://github.com/你的用户名/react-native-push-notification.git - 第三步:在本地修改代码,完成后提交到你仓库的一个专属分支(比如
feature/custom-push-notification),然后推送到远程 - 第四步:修改你的项目的
package.json,把依赖换成你自己的Git仓库地址:"dependencies": { // ... 其他依赖 "react-native-push-notification": "git+https://github.com/你的用户名/react-native-push-notification.git#feature/custom-push-notification" } - 第五步:执行
npm install,npm会拉取你自己仓库的版本,后续再执行npm install也不会覆盖你的修改 - 第六步:你的自定义包版本就在自己的Git仓库里,后续可以继续维护更新,团队成员也能直接通过这个Git地址使用你的修改
各方案对比
- patch-package:轻量,适合小修改,不影响原始包结构,但修改太大的话补丁文件会比较复杂
- 本地依赖:操作简单,适合一次性大修改,但包会占用项目空间,不方便跨项目复用
- Fork仓库:适合长期维护,方便跨项目共享,但需要单独维护一个仓库分支
内容的提问来源于stack exchange,提问作者HungrySoul
相关产品推荐
相关产品推荐

