修改 node_modules第三方依赖

有时候使用npm上的包,发现有bug,我们知道如何修改,但是别人可能一时半会没法更新,或者是我们特殊需求,别人不愿意修改,这时候我们只能自己动手丰衣足食。那么我们应该如何修改别人的源码呢?首先,直接修改node_modules里面的文件是不太行的,重新安装依赖就没有了。一般常用办法有两个:

  1. 下载别人代码到本地,放在src目录,修改后手动引入。
  2. fork别人的代码到自己仓库,修改后,从自己仓库安装这个插件。

这两个办法的缺陷就是:更新麻烦,我们每次都需要手动去更新代码,无法与插件同步更新。如果我们要修改的代码仅仅是别人的一个小模块,其他大部分代码都不动,这时候有一个很投机的操作:利用 webpack alias 来覆盖别人代码。

webpack alias

webpack alias一般用来配置路径别名,使我们可以少写路径代码:

chainWebpack: config => {
    config.resolve.alias
      .set('@', resolve('src'))
      .set('#', resolve('src/views/page1'))
      .set('&', resolve('src/views/page2'));
},

也就是说,webpack alias会替换我们写的“简写路径”,并且它对node_modules里面的文件也是生效的。这时候我们可以将别人源码里面引用模块的路径替换成我们自己的文件。
具体操作如下:

  1. 找到别人源码里面的需要修改的模块,复制代码到src目录
  2. 修改其中的bug,注意里面引用其他的文件都需要写成绝对路径
  3. 找到这个模块被引入的路径(我们需要拦截的路径)
  4. 配置webpack alias

实际操作一下

以qiankun框架的patchers模块为例:
文件被引用的路径为:./patchers(我们要拦截的路径)在这里插入图片描述
复制内容到src/assets/patchers.js,修改其 import 路径为绝对路径,并添加我们的代码:
在这里插入图片描述
在这里插入图片描述
配置webpack alias(我用的是vue-cli4,配置文件是vue.config.js):

const path = require('path');
module.exports = {
  chainWebpack: config => {
    config.resolve.alias
      .set('./patchers', path.resolve(__dirname, 'src/assets/patchers.js'))
  }
};

运行代码,控制台打印成功,表明我们已经成功覆盖别人的代码,而且别人的代码有更新时,我们也可以同步更新,只是这个模块的代码使用我们自定义的。打包之后也是可以的。
在这里插入图片描述

patch-package

  1. yarn add --dev patch-package

  2. 在package.json 的scripts中加入 { “postinstall”: “patch-package” },这是npm的一个钩子,会在依赖包被install之后执行

  3. 修改node_modules中的代码

  4. 生成patches,yarn patch-package [your-package-name]
    在这里插入图片描述

  5. 提交patches后,重新install包你就会发现是你修改后的结果

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
vue-element-admin是一个基于Vue.js和Element UI的后台管理系统框架。在项目的开发过程中,我们会使用到很多第三方的插件和库,这些插件和库都需要通过npm或者yarn安装到项目的依赖包中,而这些依赖包都被存放在项目根目录下的node_modules文件夹中。 vue-element-admin的完整依赖node_modules是包含了所有需要的第三方插件和库的文件夹。在安装vue-element-admin时,我们需要运行一条类似于"npm install"或者"yarn install"的命令来自动安装这些依赖包。这些依赖包包括了一些vue的相关包、element UI的相关包、路由管理包vue-router、状态管理包vuex以及其他一些常用的工具包等等。 使用vue-element-admin开发项目时,我们可以根据需要引入所需的依赖包,比如在组件中需要使用表格功能,就可以通过引入element UI的表格组件实现;如果需要实现页面路由跳转,就可以通过引入vue-router来实现。这些依赖包在node_modules文件夹中都有相应的目录结构和文件,我们只需要按需引入即可。 随着项目的开发和迭代,我们可能还会不断引入新的第三方插件和库,这些新的依赖包也会被自动安装到node_modules文件夹中。因此,保持vue-element-admin的完整依赖node_modules的健康和整洁是非常重要的,它们对项目的正常运行和开发具有至关重要的作用。同时,也可以通过定期清理无用的依赖包来减小项目的体积,提升项目的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值