React-Native:如何提交node_modules中已修改的包?
这个问题我碰到过好多次了,直接改node_modules确实容易踩Git忽略的坑,给你几个实用的解决方案,按需求选就行:
方法1:临时强制提交单个修改文件(快速临时方案)
如果只是临时应急修改,不想搞复杂流程,可以用Git的强制添加命令绕开.gitignore:
- 先定位到你修改的文件,执行强制添加(
-f是force的意思,能忽略.gitignore规则单独追踪该文件):git add -f node_modules/[你的包名]/[修改的文件名].js - 然后正常提交修改:
git commit -m "修复:调整XX包的XX逻辑" - 注意:提交后这个文件会一直被Git追踪,后续如果更新该npm包,你的修改可能被覆盖;其他同事拉代码时会拿到你修改后的文件,但如果他们重新安装依赖,修改会丢失,所以这个方案只适合短期临时用。
方法2:用Patch管理修改(推荐用于短期维护)
更靠谱的方式是把修改做成补丁文件,既保留修改记录,又不直接提交node_modules文件:
手动生成补丁(无需额外工具)
- 先在项目根目录创建
patches文件夹(确保这个文件夹不在.gitignore里),然后导出修改为patch文件:git diff node_modules/[你的包名]/[修改的文件名].js > patches/fix-[包名].patch - 把patch文件加入Git并提交:
git add patches/fix-[包名].patch git commit -m "添加XX包的修复补丁" - 其他同事拉代码后,执行下面的命令应用补丁:
git apply patches/fix-[包名].patch
用patch-package工具(React Native项目首选)
这个工具专门用来管理npm包的本地修改,自动生成和应用补丁,非常省心:
- 先安装开发依赖:
npm install patch-package --save-dev # 或者用yarn yarn add patch-package --dev - 修改完
node_modules里的文件后,执行命令自动生成补丁:
工具会自动在npx patch-package [你的包名]patches文件夹生成对应的补丁文件,还会给package.json添加脚本。 - 提交
patches文件夹和package.json到Git:git add patches/ package.json git commit -m "生成XX包的修复补丁" - 其他同事拉代码后,只需要执行
npm install或yarn install,工具会自动应用补丁,不用手动操作。
方法3:Fork原npm包(适合长期维护的修改)
如果你的修改需要长期保留,或者要和团队持续同步,最规范的方式是自己fork原包:
- 去GitHub找到原npm包的仓库,点击Fork按钮,把仓库克隆到本地。
- 在你的fork仓库里做修改,提交并push到自己的远程仓库。
- 在项目的
package.json里,把依赖改成你的fork地址,比如:"dependencies": { "[你的包名]": "github:你的GitHub用户名/仓库名#分支名" } - 执行
npm install或yarn install更新依赖,然后提交package.json到Git。 - 之后你可以在自己的fork里持续维护修改,团队成员拉代码后安装依赖就能拿到最新的修改。
内容的提问来源于stack exchange,提问作者Kamran Akbary
相关产品推荐
相关产品推荐

