直接改node_modules?你不太优雅啊!(转载)

直接改node_modules?你不太优雅啊!(转载)为啥要改node_modules?在平常的开发中,其实是很少需要改node_modules里的代码的,但是也有很多情况需要修改。

大家好,欢迎来到IT知识分享网。

直接改node_modules?你不太优雅啊!(转载)

为啥要改node_modules?

在平常的开发中,其实是很少需要改node_modules里的代码的,但是也有很多情况需要修改。

就比如我上次遇到一个场景,我使用了一个中间件的包,用来做接口转发的,但是呢,我遇到了一个问题:这个包限制了上传的文件格式

但是其实我是要放开所有文件格式的上传的,所以我被迫需要修改node_modules中这个包的代码,放开他的限制,这样才能实现我想要的效果

那我该怎么改呢?这是个问题。或者说,我应该怎么改才能是最好的呢?

第一种:直接改

这种很好懂,就是直接进node_modules中,找到那个包的代码,并修改对应的地方的代码,然后重启项目,就能达到我想要的效果。

但是其实这种做法弊端太多啦!

  • 1、只能是你自己本地用你修改的代码,你同事用不了
  • 2、下次npm i之后那个包的代码又恢复原状

所以应该没人这么做吧???

第二种:独立维护一个包

我使用了一个包A,它限制了上传文件的格式,但是我不想,我想要放开限制,所以我怎么办呢?

我可以这样,我写一个新包B,这个新包B其实是对包A的Copy,并且Copy之后,我将包B中的格式限制给放开了,然后把包B推送到npm上

这时候我项目中不需要用到包A了,只需要安装我自己维护的包B就行了。这其实也能达到效果,但是这样会增加维护的成本。。。

第三种:patch-package

这是一个专门用来修改node_modules中包的代码的工具,使用起来也很简单。

1、安装patch-package

js复制代码npm i patch-package

2、修改node_modules

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

js复制代码npx patch-package A

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

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

其实这个时候你本地已经使用到了你修改后的代码了,但问题是怎么让你的同事也同步到你的修改后的代码。。

3、”postinstall”: “patch-package”

package.jsonscript中增加

js复制代码"postinstall": "patch-package"

这个命令的作用就是:当你的同事去执行npm i的时候,会自动执行npm run postinstall这个命令,也就是执行patch-package,这时候就回去读取刚刚的patches目录,并将那些补丁达到对应的包里。

比如我刚刚修改了包A并提交了补丁文件。那么我同事npm i的时候,就会自动执行npm run postinstall这个命令,然后去pacthes目录中找到对应的包A的补丁文件,并将补丁打到node_modules的包A中,达到同步修改代码的效果!!!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/60310.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信