Vue3 vite SVG图标使用
一、SVG图标配置
1、安装依赖
npm install vite-plugin-svg-icons
2、在vite.config.ts中配置插件
import { fileURLToPath, URL } from 'node:url'
import VueSetupExtend from 'vite-plugin-vue-setup-extend'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'
// import vueDevTools from 'vite-plugin-vue-devtools'
// https://vite.dev/config/
export default defineConfig({
plugins: [
vue(),
// vueDevTools(),
// 组件命名
VueSetupExtend(),
// SVG插件
createSvgIconsPlugin({
iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
symbolId: 'icon-[dir]-[name]',
svgoOptions: {
// 添加 SVGO 配置
plugins: [
{
name: 'removeAttrs',
params: { attrs: 'stroke' }, //不删除背景色 fill属性
//params: { attrs: 'fill' }, // 删除 fill 属性
},
],
},
}),
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),
},
},
})
3、main.ts 导入
import 'virtual:svg-icons-register'
注意:已经设置自动清除SVG的fill,若不清除,则fill无效
二、获取SVG图标
1、阿里图标库
https://www.iconfont.cn/
2、选中图标,点击下载,复制SVG代码

3、新建 icons 文件夹
位置:src/assets/icons,与上面的配置文件对于
4、新建文件
xx.svg,并把复制的SVG代码,粘贴
三、封装
1、新建
文件: SvgIcon.vue
路径:src/components
2、内容
<template>
<svg :style="{width:width,height:height}" >
<use :xlink:href="prefix + name" :fill="color"></use>
</svg>
</template>
<script setup lang="ts" name="SvgIcon">
// SVG图标的 名字、颜色、高度、宽度
defineProps({
width:{
type:[String, Number],
default: 20
},
height:{
type:[String, Number],
default: 20
},
color:{
type:String,
default: "#2c2c2c"
},
prefix:{
type:String,
default:"#icon-"
},
name:String,
}
)
</script>
四、注册全局组件
main.ts
1、引入
import SvgIcon from './components/SvgIcon.vue'
2、注册
app.component('SvgIcon', SvgIcon)
五、使用
<svg-icon name="love" width="40" height="40" color="red"></svg-icon>

浙公网安备 33010602011771号