手把手教你更优雅的修改node_modules里的代码

 更新时间:2023年02月03日 10:01:26   作者:leal_朝  
这篇文章主要给大家介绍了关于如何更优雅的修改node_modules里的代码的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

为什么要改node_modules?

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

第一种:直接改

这种很容易理解,就是直接进node_modules中,找到相关包的代码,并修改相应位置代码,然后重启项目即可。

但是这样做存在如下弊端:

  • 只能是你自己本地用你修改的代码,其他人用不了;
  • 下次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.json的script中增加:

"postinstall": "patch-package"

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

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

补充:修改了node_modules的文件打包后不生效

原因是我们修改的虽然是源码,并且在我们本地测试的时候生效,但我们打包后引用的是node_modules编译打包后的文件

问题出在node_modules分为两个部分:一个是组件的源码文件,一个是编译打包后的文件

如果想要解决这个问题,我们可以把想要修改的文件单独复制一份出来放到需要使用的文件夹,并且更改主文件中的引用路径,简单来说即不引用node_modules里的文件,引用拉出来的那份文件

修改

import 组件名 form '从node_modules里复制出来的文件的位置'

总结

到此这篇关于手把手教你更优雅的修改node_modules里的代码的文章就介绍到这了,更多相关修改node_modules代码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入理解Node.js中通用基础设计模式

    深入理解Node.js中通用基础设计模式

    大家在谈到设计模式时最先想到的就是 singletons, observers(观察者) 或 factories(工厂方法)。本文重点给大家介绍Node.JS一些基础模式的实现方法,感兴趣的朋友跟随脚本之家小编一起学习吧
    2017-09-09
  • Node.js使用WebAssembly

    Node.js使用WebAssembly

    本文主要介绍了Node.js使用WebAssembly,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 浅探express路由和中间件的实现

    浅探express路由和中间件的实现

    这篇文章主要介绍了浅探express路由和中间件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 关于没有彻底清除node和npm的解决方法

    关于没有彻底清除node和npm的解决方法

    最近因为npm和node的版本不匹配遇到了许多困难,比如更新npm的版本,结果它给报错了,查阅了好多资料,发现就是node和npm卸载的时候,还有残留,所以本文给大家介绍了关于没有彻底清除node和npm的解决方法,需要的朋友可以参考下
    2024-03-03
  • node.js连接mongoose数据库方法详解

    node.js连接mongoose数据库方法详解

    之前我们都是通过shell来完成对数据库的各种操作的,在开发中大部分时候我们都需要通过程序来完成对数据库的操作。而Mongoose就是一个让我们可以通过Node来操作MongoDB的模块
    2022-08-08
  • NodeJs项目中关闭ESLint的方法

    NodeJs项目中关闭ESLint的方法

    ESLint是一个用来识别 ECMAScript 并且按照规则给出报告的代码检测工具,使用它可以避免低级错误和统一代码的风格。这篇文章主要介绍了NodeJs项目中关闭ESLint的方法,需要的朋友可以参考下
    2018-08-08
  • 在Linux系统上更新Node.js到最新版本的3种方法小结

    在Linux系统上更新Node.js到最新版本的3种方法小结

    这篇文章主要介绍了在Linux系统上更新Node.js到最新版本的3种方法,使用NVM,使用NPM,用二进制包更新Node.js,文中有详解更新方法,需要的朋友可以参考下
    2023-09-09
  • 利用nodejs监控文件变化并使用sftp上传到服务器

    利用nodejs监控文件变化并使用sftp上传到服务器

    这篇文章主要介绍了利用nodejs监控文件变化并使用sftp上传到服务器的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • 为什么Node.js会这么火呢?Node.js流行的原因

    为什么Node.js会这么火呢?Node.js流行的原因

    是什么原因让Node.js突然间如此流行呢?听起来像是有了一种新的Web开发技术,是这样吗?我们来汇总一下。
    2014-12-12
  • Node.js实现数据推送

    Node.js实现数据推送

    这篇文章主要为大家详细介绍了Node.js实现数据推送的相关资料,感兴趣的小伙伴们可以参考一下
    2016-04-04

最新评论