element-plus按需自动导入的配置 以及icon图标不显示的问题解决

安装插件

在使用 Element UI 时,如果你希望自动注册图标组件,可以通过使用 IconsResolver 来实现。IconsResolver 是 Vite 插件 unplugin-vue-components 的一部分,这个插件可以帮助你自动导入组件,包括 Element UI 的图标组件。

首先,确保你已经安装了 unplugin-vue-componentsunplugin-auto-import(用于自动导入 API)。你可以通过 npm 或 yarn 来安装这些依赖:

javascript 复制代码
npm install -D unplugin-vue-components unplugin-auto-import unplugin-icons

安装 Element Plus(如果你使用的是 Element Plus)

javascript 复制代码
npm install element-plus

配置 Vite

vite.config.jsvite.config.ts 中添加以下配置:

javascript 复制代码
import { fileURLToPath, URL } from 'node:url'
import path from 'path'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'
import Icons from 'unplugin-icons/vite'
import IconsResolver from 'unplugin-icons/resolver'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// import 'dotenv/config';
// // require('dotenv').config();
// const env = dotenv.config({ path: './.env' }).parsed
const pathSrc = fileURLToPath(new URL('./src', import.meta.url))
// https://vite.dev/config/
  // export default defineConfig({
//   base: process.env.NODE_ENV === 'production' 
//   ? '/your-project/' 
//   : '/'
// })
export default defineConfig({
  plugins: [
    vue(),
    vueDevTools(),
    AutoImport({
      imports: ['vue', 'vue-router'],
      resolvers: [
        ElementPlusResolver(),
        IconsResolver({
          prefix: 'Icon',
        }),
      ],
      dts: path.resolve(pathSrc, 'auto-imports.d.ts'),
    }),
    Components({
      resolvers: [
        IconsResolver({
          enabledCollections: ['ep'],
        }),
        ElementPlusResolver()
      ],
      directoryAsNamespace: true,
      dts: path.resolve(pathSrc, 'components.d.ts'),
    }),
    Icons({
      autoInstall: true,
      compiler: 'vue3'
    }),
    // Inspect(),
  ],
  resolve: {
    alias: {
      '@': pathSrc
    },
  },
  define: {
    'process.env': process.env,
  },
  server: {
    host: '192.168.1.100',
    port: 3000,
    open: true
  },
  devServer: {
    proxy: {
      "/api": {
        target: "http://192.168.1.100:3000",
        pathRewrite: { "^/api": "" },
        ws: true,
        changeOrigin: true,
      },
    },
  },
})

在组件中使用图标

有个官方文档没提及的地方,用这种方式自动引入的图标写法要稍微改变,之前写法是:

html 复制代码
<el-icon><Link /></el-icon>

这样图标不会显示出来,尝试后发现要改成:

html 复制代码
<el-icon><i-ep-Link /></el-icon>
或
<i-ep-Link />

前面要加上i-ep-前缀,文档没提示这点,应该是因为这里的配置,需要加上ep

javascript 复制代码
IconsResolver({
   enabledCollections: ['ep'],
}),
相关推荐
草履虫建模11 小时前
力扣算法 1768. 交替合并字符串
java·开发语言·算法·leetcode·职场和发展·idea·基础
naruto_lnq13 小时前
分布式系统安全通信
开发语言·c++·算法
Mr Xu_13 小时前
告别冗长 switch-case:Vue 项目中基于映射表的优雅路由数据匹配方案
前端·javascript·vue.js
前端摸鱼匠13 小时前
Vue 3 的toRefs保持响应性:讲解toRefs在解构响应式对象时的作用
前端·javascript·vue.js·前端框架·ecmascript
学嵌入式的小杨同学13 小时前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
sleeppingfrog13 小时前
zebra通过zpl语言实现中文打印(二)
javascript
Re.不晚13 小时前
Java入门17——异常
java·开发语言
精彩极了吧14 小时前
C语言基本语法-自定义类型:结构体&联合体&枚举
c语言·开发语言·枚举·结构体·内存对齐·位段·联合
南极星100515 小时前
蓝桥杯JAVA--启蒙之路(十)class版本 模块
java·开发语言
未来之窗软件服务15 小时前
未来之窗昭和仙君(六十五)Vue与跨地区多部门开发—东方仙盟练气
前端·javascript·vue.js·仙盟创梦ide·东方仙盟·昭和仙君