Vite2+Vue3.2+整合svg

安装vite-plugin-svg-icons插件

yarn add vite-plugin-svg-icons -D

vite.config.ts文件配置

iconDirs设置svg文件位置;
symbolId设置svg名字

export default defineConfig({
  plugins: [
    createSvgIconsPlugin({
      iconDirs: [pathResolve('src/svg/icon')],
      symbolId: 'icon-[dir]-[name]',
      inject: 'body-last',//body-last|body-first默认body-last
      customDomId: '__svg__icons__dom__', //默认__svg__icons__dom__
    }),
  ],
}

main.ts中添加配置

import 'virtual:svg-icons-register'

创建svgIcon.vue文件

<template>
  <svg aria-hidden="true">
    <use :href="symbolId" :fill="color" />
  </svg>
</template>

<script setup lang="ts">
import { computed } from "vue";

interface SvgInfo {
  prefix?: string;
  name: string;
  color?: string;
}

const props = withDefaults(defineProps<SvgInfo>(), {
  prefix: "icon",
  color: "#333",
});

const symbolId = computed(() => `#${props.prefix}-${props.name}`);

console.log("symbolId:" + symbolId);

const color = computed(() => props.color);
</script>

应用svgIcon.vue组件

<template>
  <svgIcon
    name="gitee"
    @click.native="goto"
    style="width: 1.5em; height: 1.5em; font-size: 18px; cursor: pointer"
    color="hotpink"
  ></svgIcon>
</template>

<script setup>
import svgIcon from "@/views/common/svgIcon.vue";
import Icon from "@ant-design/icons-vue";
const url = "https://github.com/AlexhahahaDrag/alex_blog.git";
const goto = () => {
  window.open(url);
};
</script

至此就可以完美在项目中使用svg了。
项目地址

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值