跳转到内容

SVG组件管理插件

‌unplugin-svg-component‌ 是一个用于优化前端SVG组件管理的插件,特别适用于Vue和React项目。该插件解决了其他SVG图标插件的一些痛点,例如自动生成组件、类型提示、tree-shaking支持以及热重载(HMR)等功能。

使用方法

安装插件

sh
npm install unplugin-svg-component -D
sh
yarn add unplugin-svg-component -D

创建文件夹

在跟目录下创建文件夹types/auto

配置插件 (vite.config.js/vite.config.ts)

// 这是 Node.js 的 path 模块中的一个方法,用于将路径或路径片段解析为绝对路径。
import { resolve } from "node:path"
import SvgComponent from "unplugin-svg-component/vite"

export default defineConfig({
  plugins: [
    // 自动生成 SvgIcon 组件和 SVG 雪碧图
    SvgComponent({
      // __dirname 表示当前执行脚本所在的目录。resolve 函数会将 __dirname 和 "types/auto" 拼接成一个完整的文件路径。
      // src/assets/icons icon图标存放位置
      iconDir: [resolve(__dirname, "src/assets/icons")],
      preserveColor: resolve(__dirname, "src/assets/icons/preserve-color"),
      dts: true,
      dtsDir: resolve(__dirname, "types/auto")
    }),
  ],
})

全局注册 (main.js/main.ts)

import SvgIcon from "~virtual/svg-component"

// 注册 SvgIcon 组件
app.component("SvgIcon", SvgIcon)

使用 (.vue)

<!-- keyboard-down.svg 已存在于src/assets/icons目录中 -->
<SvgIcon name="keyboard-down" />

TS注意事项

安装@types/node解决node:path报错

sh
npm install @types/node -D