手把手教你更优雅的修改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制作爬取大众点评的爬虫

    相信每位用过大众点评的人都知道,大众点评上有很多美食餐馆的信息,所以这篇文章给大家分享利用Node.js实现爬取大众点评的爬虫,正好可以拿来练练手Node.js。感兴趣的可以参考借鉴。
    2016-09-09
  • node 版本切换的实现

    node 版本切换的实现

    这篇文章主要介绍了node 版本切换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Node.js中处理特殊字符的文件名解决方案

    Node.js中处理特殊字符的文件名解决方案

    在Node.js中,通过path模块提供的basename方法,我们可以轻松地从文件路径中提取文件名,在这篇文章中,我们将介绍一种安全稳妥的方法,结合使用dirname和长度计算,以处理特殊字符的文件名,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • node.js Promise对象的使用方法实例分析

    node.js Promise对象的使用方法实例分析

    这篇文章主要介绍了node.js Promise对象的使用方法,结合实例形式分析了node.js中Promise对象的功能、定义、调用方法及相关使用技巧,需要的朋友可以参考下
    2019-12-12
  • Node.js基础入门之path模块,url模块,http模块使用详解

    Node.js基础入门之path模块,url模块,http模块使用详解

    这篇文章主要为大家介绍了Node.js中的三个模块(path、url、http)的使用详解,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-03-03
  • 如何优雅地在Node应用中进行错误异常处理

    如何优雅地在Node应用中进行错误异常处理

    这篇文章主要介绍了如何优雅地在Node应用中进行错误处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • node.js中的fs.openSync方法使用说明

    node.js中的fs.openSync方法使用说明

    这篇文章主要介绍了node.js中的fs.openSync方法使用说明,本文介绍了fs.openSync方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Node学习笔记:Node.js安装及环境配置 史诗级详细版【含测试与镜像说明】

    Node学习笔记:Node.js安装及环境配置 史诗级详细版【含测试与镜像说明】

    这篇文章主要介绍了Node学习笔记之Node.js安装及环境配置方法,详细分析了node.js的基本安装、配置、环境变量设置、以及环境测试与镜像使用说明,需要的朋友可以参考下
    2023-05-05
  • Node.js中的缓冲与流模块详细介绍

    Node.js中的缓冲与流模块详细介绍

    这篇文章主要介绍了Node.js中的缓冲与流模块详细介绍,本文讲解了缓冲(buffer)模块、类:Buffer、写入缓冲区、复制缓冲区、流模块等内容,需要的朋友可以参考下
    2015-02-02
  • node.js中使用node-schedule实现定时任务实例

    node.js中使用node-schedule实现定时任务实例

    这篇文章主要介绍了node.js中使用node-schedule实现定时任务实例,包括安装方法和4种使用例子,需要的朋友可以参考下
    2014-06-06

最新评论