无限灰

Vite动态导入svg用作vue图标

1、需要安装一个vite-svg-loader

npm i --save-dev vite-svg-loader

2、在vite.config.js中使用

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import svgLoader from 'vite-svg-loader' // 导入

export default defineConfig({
  plugins: [vue(), svgLoader()], // 使用
})

3、动态导入svg文件,下面是用动态导入当前目录下的svg作为示例

import { defineComponent } from "vue";

export default {
  install(app) {
    const svgs = import.meta.glob("./*.svg", { eager: true }); // 导入当前目录下所有的svg文件
    Object.keys(svgs).map(key => {
      // key 为 ./svg-name.svg 路径的形式,需要做个替换 -> svg-name
      const name = key.replace(/\.\/(.*?)\.svg/, "$1"); 
      const comp = defineComponent(svgs[key]);
      app.component(name, comp); // 全局注册组件即可使用
    });
  }
};