vue项目中修改element-ui源码,如何运用到项目中 (修改 node_modules 里的文件,并应用)

这篇具有很好参考价值的文章主要介绍了vue项目中修改element-ui源码,如何运用到项目中 (修改 node_modules 里的文件,并应用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

由于element组件不满足项目的需要,需要对源码进行修改,如何在使用到项目中,发现直接修改源码以后不生效,原因是因为其实项目中所引用的并不是直接源码,而是通过打包好后的lib文件。源码只是相当于提供给你参考的,整个项目的运行,靠的都是lib文件夹下的打包文件。
如果修改呢
第一步,实现从git上拉取element的源码

第二步,安装依赖 npm install,并跑起项目

第三步,修改packages中的源码,再进行打包(npm run dist)

最后一步,找到你的项目中的node_modules包下的element-ui文件夹下的lib包,用你修改好后打包生成的lib包进行替换即可生效

利用webpack 的alias

需要修改node_modules插件需求功能。那么我们应该如何修改别人的源码呢?首先,直接修改node_modules里面的文件是不太行的,重新安装依赖就没有了。一般常用办法有三个

  1. 下载别人代码到本地,放在src目录,修改后手动引入。
  2. fork别人的代码到自己仓库,修改后,从自己仓库安装这个插件
  3. 向上面说的那样
    缺点:更新麻烦,我们每次都需要手动去更新代码,无法与插件同步更新

如果我们要修改的代码仅仅是一个小模块,其他大部分代码都不会动,这时候就可以利用webpack的alias属性去覆盖别人代码。
(别人可能一时半会没法更新,或者是我们特殊需求,别人不愿意修改)

webpack 中的 alias一般用来配置路径别名,使我们可以少写路径代码,它对node_modules里面的文件也是生效的

这时候我们可以将别人源码里面引用模块的路径替换成我们自己修改之后的文件了。

chainWebpack: config => {
    config.resolve.alias
      .set('@', resolve(__dirname, "src"))
      .set('@page', resolve('src/views/page'))
      .set('&clidoctor', resolve('src/views/clidoctor'));
},
具体操作如下:
  1. 找到源码里面的需要修改的模块的文件,复制文件到src目录
  2. 修改其中的功能(bug),注意里面引用其他的文件都需要写成绝对路径
  3. 找到这个模块被引入的路径(我们需要拦截的路径)
  4. 配置webpack alias

例子:
以qiankun框架的patchers模块为例:
vue项目中修改element-ui源码,如何运用到项目中 (修改 node_modules 里的文件,并应用)
文件被引用的路径为:./patchers(我们要拦截的路径)
vue项目中修改element-ui源码,如何运用到项目中 (修改 node_modules 里的文件,并应用)
文件内容为:
vue项目中修改element-ui源码,如何运用到项目中 (修改 node_modules 里的文件,并应用)
复制内容到src/assets/patchers.js,修改其 import 路径为绝对路径,并添加我们的代码:
vue项目中修改element-ui源码,如何运用到项目中 (修改 node_modules 里的文件,并应用)
配置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'))
  }
};

运行代码,控制台打印成功,表明我们已经成功覆盖别人的代码,而且别人的代码有更新时,我们也可以同步更新,只是这个模块的代码使用我们自定义的。打包之后也是可以的。
vue项目中修改element-ui源码,如何运用到项目中 (修改 node_modules 里的文件,并应用)

也可以使用patch-package来修改

使用patch-package来修改node_modules里面的文件更方便

  1. 安装patch-package:npm i patch-package --save-dev
  2. 修改package.json,新增命令postinstall
"scripts": {
+  "postinstall": "patch-package"
 }
  1. 修改node_modules里面的代码
  2. 执行命令:npx patch-package qiankun。

第一次使用patch-package会在项目根目录生成patches文件夹,里面有修改过的文件diff记录。
vue项目中修改element-ui源码,如何运用到项目中 (修改 node_modules 里的文件,并应用)
当这个包版本更新后,执行命令:git apply --ignore-whitespace patches/qiankun+2.0.11.patch即可。其中qiankun+2.0.11.patch是它生成的文件名。

觉得有用点个赞呗!!!

参考:程序员成长指北文章来源地址https://www.toymoban.com/news/detail-442711.html

到了这里,关于vue项目中修改element-ui源码,如何运用到项目中 (修改 node_modules 里的文件,并应用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue Element-ui 表格多选 修改选中行背景色

    转自:https://www.cnblogs.com/Amerys/p/14688342.html 整体思路方式: 1、给获取到的数据添加自定义的className 2、在点击行(row-click)和手动点击勾选框的事件(select-all)中获取到当前的row的className,直接修改className即可 点击查看事件说明 3、在行的 className 的回调方法中(row-class-name)直接返回

    2024年02月11日
    浏览(40)
  • vue修改element-ui日期下拉框datetimePicker的背景色样式

    在vue项目中,源datetimePicker的背景样式,往往与项目背景不搭,需要修改。   1.先在assets里面新建一个index.css文件来存储全局样式 2.在main.js里面导入这个css文件最后在里面加入我们想要的样式 此时的效果如下图   3.在el-date-picker中设置样式 4.设置对应的背景样式 得到下图效果

    2024年02月11日
    浏览(36)
  • 使用element-ui+vue 做修改功能时,数据不回显问题

    后端数据已经做好了,页面发送数据获取id给后端,查询数据后返回给前段页面。res.data.data数据是可以打印出来的,但是这个_this.from一直打印出来的是undefined,找了很多方式都没有办法把值附上去。请问有什么办法吗 这个是表单页面

    2024年02月16日
    浏览(28)
  • 【VUE】4、VUE项目中引入Element-UI

    1、element-ui 官方文档(中文版) 2、安装 element-ui 1、进入项目目录下 2、安装 element-ui 注意: VUE2 使用的是 element-ui,VUE3 使用的是 element-plus 3、引入 element-ui(完整引入) 1、打开 main.js 文件 在 main.js 文件中,引入 element-ui 2、注册 element-ui 以上代码便完成了 Element 的引入。需

    2024年02月01日
    浏览(39)
  • Vue2+Element-UI的el-steps封装与修改样式

     

    2024年02月14日
    浏览(30)
  • 前端项目review之修改element-ui全局主题颜色配置element-theme-chalk和gulp

    每个公司的主题风格肯定是不一样的,比如现在的公司主题就是#00ab7a。在PC端TO-B的项目中少不了用 element-ui ,这个时候用 element-theme-chalk 直接本地编译修改了element全局的主题色。 执行 当只有一个主题不需要切换的时候,使用 element-theme-chalk 就足够了,但是当主题很多的时候

    2023年04月09日
    浏览(25)
  • vue项目引入element-ui的三种方式

    通过执行命令vue add element来进行引入 通过执行命令npm i element-ui -S安装依赖 main.js文件引入element-ui main.js文件全局引入element-ui样式 安装babel-plugin-component 修改babel.config.js文件 main.js按需引入组件

    2024年02月11日
    浏览(35)
  • 1. Vue项目中element-ui版本进行升级

    vue项目element-ui版本为1.xx.x,要将其升级为2.15.7(最新版本)。 将原element-ui版本删除 安装升级的版本: 全局引入element-ui:在项目的main.js,原来的theme-default换为theme-chalk。 对vue版本进行升级(如果vue版本在2.5.10之下element-ui版本就不可高于2.7): 将 vue-template-compiler的版本升级: 启

    2024年02月11日
    浏览(243)
  • vue项目element-ui上传组件自定义方法无法获取进度

    原因:element-ui中的up-load组件使用时,若用自定义上传http-request,会重新申明XMLHttpRequest,on-progress里的申明则被覆盖,无法使用该钩子,无法添加进度条 方案一:假进度条;写个假进度条优化用户体验,使用el-upload组件里on-change方法的status状态,配合定时器 ,以vue3为例 ,

    2024年02月15日
    浏览(36)
  • vue项目打包上线element-ui的icon偶尔乱码问题

    线上环境偶尔会复现, 具体: 一般使用不会出现这个问题,因为一般引入的是element-ui的css文件,问题出在于为了主题色变化啊,需要用到scss变量引入了scss文件。 @import “~element-ui/packages/theme-chalk/src/index”; 而dart-sass在编译element-ui里icon伪元素的content unicode编码时会转换成对

    2023年04月17日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包