如何更优雅的修改node_modules里的代码?

为什么要改node_modules?

在开发中,如果有必要修改node_modules里的代码,有哪几种方法呢?哪种方法最好呢?

第一种:直接改

这种很容易理解,就是直接进node_modules中,找到相关包的代码,并修改相应位置代码,然后重启项目即可。
但是这样做存在如下弊端:

  1. 只能是你自己本地用你修改的代码,其他人用不了;
  2. 下次npm install 之后之前修改的代码都会恢复原状;
第二种:独立维护一个包

假如我使用了包A,它限制了上传文件的格式,但是我的业务要求是放开所有限制,此时我可以这样:在原有包的基础上copy一个包B,,修改相关代码后把包B推送到npm上,此时我的项目中不需要原来的包了,用我刚维护的包B就可以了,这样就可以达到效果。以前我也是这么做的。这样做的缺点就是会增加维护的成本,当然个人认为这种成本可以忽略不计,因为我改完后很长时间从来没有再次改动过。

第三种: patch-package

这是一个专门用来修改node_modules中包的代码的工具,使用方式也很简单:
1、安装patch-package

npm i patch-package

2、修改node_modules

比如我想修改包A,那么我直接在node_modules中修改,然后执行

npx patch-package A

这时候你的根目录下就会出现patches这个目录,里面会出现一个包A的补丁文件,这个文件大有用处!

注意:记得要把 patches 这个目录提交到git或者svn

这个时候你本地已经使用到了你修改后的代码了。那现在的问题是怎么让其他人也同步到你修改后的代码。

3、“postinstall”:“patch-package”

package.jsonscript中增加:

"postinstall": "patch-package"

这个命令的作用就是:当执行npm install的时候,会自动执行npm run postinstall这个命令,也就是执行patch-package,这时候就会去读取上面说的 patches目录,并将那些补丁打到对应的包里,达到同步修改代码的效果!!

以上几种修改 node_modules源码的方式,与诸君共享!

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值