你需要安装一下依赖:
- unplugin-icons
- unplugin-auto-import
- @iconify-json/ep
- unplugin-auto-import
- unplugin-vue-components
- @element-plus/icons-vue
以下安装到 devDependencies:
cnpm i -D unplugin-icons unplugin-auto-import @iconify-json/ep unplugin-auto-import unplugin-vue-components
只有一个需要安装到 dependencies:
cnpm i @element-plus/icons-vue
推荐通过 cnpm 下载安装,npm 有些慢。根据个人网络状况来!
配置vite.config.ts
:
// vite.config.ts
import vue from "@vitejs/plugin-vue";
import { defineConfig } from "vite";
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import Icons from "unplugin-icons/vite";
import IconsResolver from "unplugin-icons/resolver";
export default defineConfig({
plugins: [
vue(),
AutoImport({
imports: ["vue"],
resolvers: [
ElementPlusResolver(),
IconsResolver({
prefix: "Icon"
})
]
}),
Components({
resolvers: [
ElementPlusResolver(),
IconsResolver({
enabledCollections: ["ep"]
})
],
dirs: ["./src/components/**"]
}),
Icons({
autoInstall: true
})
]
});
在模板中使用:
<i-ep-search />
<!-- 或者 -->
<IEpSearch />
自动导入的图标不能插入到 props 中,如果 Element-Plus 组件提供 icon 插槽就可以用,否则还是需要自己手动导入。比如:
<el-popconfirm
confirm-button-text="确定"
cancel-button-text="取消"
icon-color="#626AEF"
:icon="InfoFilled"
title="确定删除该评论?"
>
</el-popconfirm>
像是上面这个组件,它没有提供 icon 插槽,提供图标只能通过 props,InfoFilled 改成 IEpInfoFilled 的话不能被识别,所以,需要手动导入:
import { InfoFilled } from "@element-plus/icons-vue";
main.ts
文件也无需引入 element-plus 的 index 文件和app.use(ElementPlus);
。