node_modules插件代码修改,如何快速修改防止npm install安装覆盖代码

文章介绍了两种处理方式来应对业务需求不满足时对npm组件的修改。一种是直接在node_modules内修改,但这种方式不持久;另一种是fork到个人仓库并发布到npm,但这比较繁琐。文章推荐了一种替换插件包的方法,利用postinstall脚本在安装后覆盖原文件,以及引用自定义包的方式,将自定义模块作为文件引用添加到package.json中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

有些组件不满足业务时咱们只能修改插件的源码:

  1. 直接在项目的node_modules下找到插件的源码直接修改;
    • 优点:简单直接、快速见效;
    • 缺点:不能持久化,一旦重新npm install安装就失效;不方便团队成员使用修改后的代码;
  2. 去github上fork代码到自己的仓库进行修改,并将自己修改过后的代码发布到npm上使用;
    • 优点:团队成员都可以使用到这份修改的代码;
    • 缺点:麻烦、十分麻烦;

在网上找了很多解决方案最多的是patch-package 但是我们使用的组件包来源民间大神修改,改动范围广,导致使用这个根本没有用,还产生冲突。所以找到了覆盖组件代码的方法简单粗暴。

二、替换插件包(拷贝覆盖法)

npm install 完成后会执行package.json 文件里的script内的postinstall钩子。在这个勾子执行cp 修改过的文件 ./node_modules/包名/原始文件拷贝过去,最终node_modules下的文件就变成了修改后的文件了,应用在本篇element-ui例子中如下:

在自己的项目中存放修改插件包,如下图:element-ui

最后在package.json文件里加入下图的代码:

其中要加-r 不然只能拷贝文件不能拷贝文件夹 ;源文件最后要加*来移动文件内所有的文件夹以及文件;

"postinstall": "cp -r ./element-ui/* ./node_modules/element-ui"

 即在每次install包后执行用修改后文件覆盖原始文件逻辑。

三、引用自定义包 (引用法)

另外一种是直接将自定义模块放在node_modules外面的另一个目录中,并将其作为文件引用添加到package.json 使用时要把package-lock.json文件删除再npm install 安装依赖。

"dependencies": {
   "yu-element-ui": "file:yu-element-ui"
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_34701838

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值