依赖安装
pnpm i -D unplugin-icons vite-plugin-svg-icons @vitejs/plugin-vue
配置 vite.config.ts 文件
import path, { resolve } from "node:path";
import vue from "@vitejs/plugin-vue";
import { FileSystemIconLoader } from "unplugin-icons/loaders";
import IconsResolver from "unplugin-icons/resolver";
import Icons from "unplugin-icons/vite";
import { NaiveUiResolver } from "unplugin-vue-components/resolvers";
import Components from "unplugin-vue-components/vite";
import { defineConfig } from "vite";
import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
// svg存放地址
const customIconPath = resolve(process.cwd(), "src/assets/svg");
export default defineConfig({
plugins: [
vue(),
Components({
// auto import components 自动加载组件
resolvers: [
NaiveUiResolver(),
IconsResolver({
customCollections: ["custom"],
componentPrefix: "icon",
}),
],
dts: false,
}),
Icons({
compiler: "vue3",
customCollections: {
custom: FileSystemIconLoader(customIconPath),
},
scale: 1,
defaultClass: "inline-block",
}),
createSvgIconsPlugin({
iconDirs: [customIconPath],
symbolId: "icon-custom-[dir]-[name]",
inject: "body-last",
customDomId: "__CUSTOM_SVG_ICON__",
}),
],
});
提醒
在这里我们为什么要使用 process.cwd()
呢?
__dirname和process.cwd()的区别
const { resolve } = require("node:path")
const dirnamePath = resolve(__dirname, "")
console.log(dirnamePath)
const pwdPath = resolve(process.cwd())
console.log(pwdPath)
输出结果是:
/Users/wangmou/workspace/whbbit-blog/wxw-blog/scripts
/Users/wangmou/workspace/whbbit-blog/wxw-blog
我们可以看到,__dirname
是命令执行目录,process.cwd()
是执行命令的 js 所的在目录
使用
假设 assets/svg 文件夹中包含 logo.svg 和 menu.svg 两个 svg 图标。我们可以直接使用 icon-custom-文件名
来使用
<template>
<icon-custom-logo />
<icon-custom-menu />
</template>
评论区
评论加载中...