vite中加载使用svg

37 篇文章 3 订阅
15 篇文章 0 订阅

使用vite-plugin-svg-icons插件

安装 (yarn or npm)

这里使用的是1.0.5版本
yarn add vite-plugin-svg-icons -D
or
npm i vite-plugin-svg-icons -D

添加配置

在vite.config.js中配置插件

import viteSvgIcons from 'vite-plugin-svg-icons';
import path from 'path';

export default () => {
  return {
    plugins: [
      viteSvgIcons({
        // 指定需要缓存的图标文件夹
        iconDirs: [path.resolve(process.cwd(), 'src/icons')],
        // 指定symbolId格式
        symbolId: 'icon-[dir]-[name]',
      }),
    ],
  };
};

在 src/main.ts 内引入注册脚本

import 'virtual:svg-icons-register';

创建svg组件

创建文件夹/src/icons/SvgIcon.vue

<template>
    <svg :class="svgClass" v-bind="$attrs" :style="{ color: color }">
        <use :xlink:href="iconName"></use>
    </svg>
</template>

<script setup lang="ts">
    import { computed, defineProps } from 'vue'
    const props = defineProps({
        name: {
            type: String,
            required: true
        },
        color: {
            type: String,
            default: ''
        }
    })
    const iconName = computed(() => `#icon-${ props.name }`)
    const svgClass = computed(() => {
        if(props.name) return `svg-icon icon-${ props.name }`
        return 'svg-icon'
    })
</script>

<style scoped>
    .svg-icon{width: 1em;height: 1em;fill:currentColor; vertical-align: middle;}
</style>

全局导入

在mian.js中引入

import SvgIcon from "./icons/SvgIcon.vue";

const app = createApp(App)
app.component("Svg-icon",SvgIcon)

页面中使用

name这是svg图片的名字

<SvgIcon name="icon1"></SvgIcon>

在2版本之后引入方法

package.json

    "fast-glob": "^3.2.12",
    "vite-plugin-svg-icons": "^2.0.1"

vite.config

import {createSvgIconsPlugin} from 'vite-plugin-svg-icons';
import path from 'path';





 // ↓插件配置
    plugins: [
      createSvgIconsPlugin({
        // 指定需要缓存的图标文件夹
        iconDirs: [path.resolve(process.cwd(), 'src/icons/svg')],
        // 指定symbolId格式
        symbolId: 'icon-[dir]-[name]',
      }),
      vue(),
    ],
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值