SSF0SSF0
首页
前端
  • Node
  • Go
  • C#
  • MySql
  • Bash
  • Git
  • Docker
  • VuePress
  • CI/CD
  • 服务器
  • 网站
  • 学习资料
  • 软件
Timeline
Github
标签
分类
首页
前端
  • Node
  • Go
  • C#
  • MySql
  • Bash
  • Git
  • Docker
  • VuePress
  • CI/CD
  • 服务器
  • 网站
  • 学习资料
  • 软件
Timeline
Github
标签
分类
  • HTML

    • html1
    • html2
  • CSS

    • Flex 布局常见问题与解决方案
  • JavaScript

    • 数据类型及引用问题
    • 处理 Blob 类型文件下载问题总结
    • localStorage 与 sessionStorage 区别
    • JavaScript 中的 script 标签问题详解
    • JavaScript 中的`this`指向问题详解
    • SessionStorage踩坑记录:它真的能"只设置一次"吗?
    • 动态加载 JS 脚本方法对比
    • 浏览器页面关闭场景下的数据上报
  • es6

    • Promise
    • es6 模块导出方式全解析
  • Vue2

    • created VS mounted 发起异步请求
    • vue2-2
  • Vue3

    • Vite + Vue3 修改 element-plus 源码
    • Vue v-if 与 v-show
    • Vue3 ref 获取组件
    • Vue3 路由传参
    • 父子组件与组件里 Hooks 加载顺序
    • 第三方组件传入参数TS提示
    • Vue3 Props 在 Hooks 中的响应性处理
    • Vue Router 的两种历史模式及部署配置详解
    • 在Vue 3项目中顺利集成Tailwind CSS的完整指南
    • Vue 3 深度选择器:deep()完全指南
  • Electron

    • 快速构建 electron + vue3 项目
  • TS

    • TS 泛型
    • 记录模板使用断言的问题
    • type 与 interface
  • WebPack

    • Webpack 介绍
  • Vite

    • Vite CLI 常见命令
    • vite 与 webpack 比较
  • 项目工程

    • 前端代码风格
    • Vue3 项目规范
    • npm 镜像问题
    • 包管理工具
    • 使用 engines 限制开发环境依赖
    • 打包与shell交互指定模式
    • 使用 pnpm 构建 Monorepo 实战指南
    • pnpm 修改依赖源码打包报错
  • 记录一下小程序
  • 控制浏览器正确保存网站账号密码的技巧

Vite + Vue3 修改 element-plus 源码

源码流程

  1. 拉取源码 https://github.com/element-plus/element-plus 根据 tags 拉取对应的版本

  2. 安装依赖 pnpm i

  3. 运行 pnpm docs:dev 运行命令启动

  4. 修改为自己需要的逻辑

  5. pnpm build 进行打包

文件替换流程

  1. 首先处理 vite 缓存问题,vite 首次加载都会缓存到 node_modules 下的 .vite/deps 文件,所以需要删除后在进行替换,再次启动生成新的缓存。vite 与 webpack 对比说明 vite 缓存问题

  2. 确保执行第一步后进行组件的替换 打包后会生成 dist 包,找到里面的 dist\element-plus\es\components 里的组件,替换到项目 node_modules 下的 element-plus 对应的组件位置,之所以替换 es 里面的组件而不是 lib 里面的组件是,因为根据 components.d.ts 文件跟踪引用路径查找到的文件地址是 es。

  3. 运行项目就可以达到修改后的效果

踩坑记录

  1. 未清除 vite 在 node_modules 下的 .vite/deps 文件中缓存的依赖, 就去替换 node_modules 下的 element-plus\es\components 组件,虽然以上两种文件的地址不一样,但是指向的都是一个地方,修改一个地方另一个地方也会改变。

    • 比如 node_modules/element-plus 是一个符号链接,指向 .pnpm\element-plus@2.6.0_vue@3.4.19\node_modules\element-plus 修改一个地方,另一个连接指向的地址是同一个文件也会发生变化。

这时候出现的问题:即便替换了文件也达不到效果,因为启动的时候读取的还是 .vite/deps 中的缓存。

最后更新时间:
贡献者: 何风顺
下一页
Vue v-if 与 v-show