vue3+vite项目中使用svgIcon

如何在vue2+webpack项目中使用svgIcon?参考:手摸手,带你优雅的使用 icon - 掘金

这篇文章主要介绍如何在vue3项目中优雅的使用图标

1、安装插件

node version: >=12.0.0

vite version: >=2.0.0

npm i vite-plugin-svg-icons -D

 插件地址:GitHub - vbenjs/vite-plugin-svg-icons: Vite Plugin for fast creating SVG sprites.

2、配置 vite.config.ts

//插件引入
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'

  plugins: [
    vue(),
    Components({
      // UI库
      resolvers: [ArcoResolver()],
    }),
    createSvgIconsPlugin({
      // 指定需要缓存的图标文件夹
      iconDirs: [path.resolve(process.cwd(), "src/assets/icons")],
      // 指定symbolId格式
      symbolId: "icon-[name]",

      /**
       * 自定义插入位置
       * @default: body-last
       */
      // inject?: 'body-last' | 'body-first'

      /**
       * custom dom id
       * @default: __svg__icons__dom__
       */
      // customDomId: '__svg__icons__dom__',
    }),
  ],

3、配置 tsconfig.json

如果你使用的 Typescript, 可以在 tsconfig.json 配置文件中添加

// tsconfig.json
{
  "compilerOptions": {
    "types": ["vite-plugin-svg-icons/client"]
  }
}
4、封装SvgIcon组件 src/components/SvgIcon




5、同文件夹下创建 index.ts

import { App } from "vue";
import SvgIcon from "./SvgIcon";
import "virtual:svg-icons-register";

const svgIconPlugin = {
  install(app: App): void {
    // 全局挂载
    app.component("svg-icon", SvgIcon);
  },
};

export default svgIconPlugin;

6、全局注册 main.ts

import { createApp } from "vue";
import App from "./App.vue";

import router from "./router/router";

// svg封装插件
import svgIcon from "@/components/svgIcon";
  
createApp(App)
  .use(router)
  .use(svgIcon)              
  .mount("#app");

7、组件中使用 

// 只需name绑定成icons目录下的svg文件名即可

你可能感兴趣的:(前端)