手把手教你更优雅的修改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代码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Express下采用bcryptjs进行密码加密的方法

    Express下采用bcryptjs进行密码加密的方法

    本篇文章主要介绍了Express下采用bcryptjs进行密码加密的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • nodejs版本管理工具nvm的安装与使用小结

    nodejs版本管理工具nvm的安装与使用小结

    在项目开发过程中,使用到vue框架技术,需要安装node下载项目依赖,本文主要介绍了nodejs版本管理工具nvm的安装与使用小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • node.js中TCP Socket多进程间的消息推送示例详解

    node.js中TCP Socket多进程间的消息推送示例详解

    这篇文章主要给大家介绍了关于node.js中TCP Socket多进程间的消息推送的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • Node.js + Redis Sorted Set实现任务队列

    Node.js + Redis Sorted Set实现任务队列

    本文给大家分享的是使用Node.js + Redis Sorted Set实现任务队列的方法示例,非常的实用,有需要的小伙伴可以参考下
    2016-09-09
  • 对mac下nodejs 更新到最新版本的最新方法(推荐)

    对mac下nodejs 更新到最新版本的最新方法(推荐)

    今天小编就为大家分享一篇对mac下nodejs 更新到最新版本的最新方法(推荐),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • node.js express框架简介与实现

    node.js express框架简介与实现

    这篇文章主要介绍了node.js express框架简介与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Node.JS使用Sequelize操作MySQL的示例代码

    Node.JS使用Sequelize操作MySQL的示例代码

    Node.JS提供了操作数据库的基础接口,本篇文章主要介绍了Node.JS使用Sequelize操作MySQL的示例代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-10-10
  • 用Nodejs实现在终端中炒股的实现

    用Nodejs实现在终端中炒股的实现

    这篇文章主要介绍了用Nodejs实现在终端中炒股的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 最流行的Node.js精简型和全栈型开发框架介绍

    最流行的Node.js精简型和全栈型开发框架介绍

    这篇文章主要介绍了最流行的Node.js精简型和全栈型开发框架介绍,本文讲解了Express.js、KOA、Total.js、Sails.js、Meteor、Mean.IO等框架,需要的朋友可以参考下
    2015-02-02
  • 在 Node.js 中使用 async 函数的方法

    在 Node.js 中使用 async 函数的方法

    利用 async 函数,你可以把基于 Promise 的异步代码写得就像同步代码一样。一旦你使用 async 关键字来定义了一个函数,那你就可以在这个函数内使用 await 关键字。下面通过本文给大家分享Node.js 中使用 async 函数的方法,一起看看吧
    2017-11-11

最新评论