| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | import process from 'node:process';import path from 'node:path';import type { PluginOption } from 'vite';import { createSvgIconsPlugin } from 'vite-plugin-svg-icons';import Icons from 'unplugin-icons/vite';import IconsResolver from 'unplugin-icons/resolver';import Components from 'unplugin-vue-components/vite';import { NaiveUiResolver } from 'unplugin-vue-components/resolvers';import { ProNaiveUIResolver } from 'pro-naive-ui-resolver';import { FileSystemIconLoader } from 'unplugin-icons/loaders';export function setupUnplugin(viteEnv: Env.ImportMeta) {  const { VITE_ICON_PREFIX, VITE_ICON_LOCAL_PREFIX } = viteEnv;  const localIconPath = path.join(process.cwd(), 'src/assets/svg-icon');  /** The name of the local icon collection */  const collectionName = VITE_ICON_LOCAL_PREFIX.replace(`${VITE_ICON_PREFIX}-`, '');  const plugins: PluginOption[] = [    Icons({      compiler: 'vue3',      customCollections: {        [collectionName]: FileSystemIconLoader(localIconPath, svg =>          svg.replace(/^<svg\s/, '<svg width="1em" height="1em" ')        )      },      scale: 1,      defaultClass: 'inline-block'    }),    Components({      dts: 'src/typings/components.d.ts',      types: [{ from: 'vue-router', names: ['RouterLink', 'RouterView'] }],      resolvers: [        NaiveUiResolver(),        ProNaiveUIResolver(),        IconsResolver({ customCollections: [collectionName], componentPrefix: VITE_ICON_PREFIX })      ]    }),    createSvgIconsPlugin({      iconDirs: [localIconPath],      symbolId: `${VITE_ICON_LOCAL_PREFIX}-[dir]-[name]`,      inject: 'body-last',      customDomId: '__SVG_ICON_LOCAL__'    })  ];  return plugins;}
 |