vue3+vite封装svg

下载包

 npm install vite-plugin-svg-icons -D

在vite.config.js文件中配置

import { defineConfig } from "vite";
import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
import vue from "@vitejs/plugin-vue";
import * as path from "path";
export default defineConfig({
  plugins: [
    createSvgIconsPlugin({
      // 指定需要缓存的图标文件夹
      iconDirs: [path.resolve(process.cwd(), "src/assets/svgs")],
    }),
    vue(),
  ],
});

后续所有的svg文件都放在assets/svgs中


image.png

在components中创建svgIcon组件


 <template>
  <svg>
    <use :xlink:href="symbolId" :fill="color" />
  </svg>
</template>

<script setup lang="ts">
import { computed } from "vue";
let props = withDefaults(defineProps<{ iconClass: string; color?: string }>(), {
  color: "#000",
});

const symbolId = computed(() => `#icon-${props.iconClass}`);
</script>

<style scoped>
svg {
  width: 100%;
  height: 100%;
}
</style>

在main.js中

import "virtual:svg-icons-register";
import SvgIcon from "./components/svgIcon.vue";
app.component("SvgIcon", SvgIcon);

普通文件中使用

  <SvgIcon iconClass="home"></SvgIcon>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容