import {defineConfig} from 'vite' import vue from '@vitejs/plugin-vue' import vueJsx from "@vitejs/plugin-vue-jsx"; import {resolve} from 'path' import Icons from 'unplugin-icons/vite' import {FileSystemIconLoader} from 'unplugin-icons/loaders' import {promises as fs} from 'node:fs' import Components from 'unplugin-vue-components/vite' import IconsResolver from 'unplugin-icons/resolver' function pathResolve(dir) { return resolve(__dirname, ".", dir) } // https://vitejs.dev/config/ export default defineConfig({ plugins: [ vue({ reactivityTransform: true }), Icons({ compiler: 'vue3', customCollections: { custom: FileSystemIconLoader('assets/custom-a'), inline: { foo: ` `, async: () => fs.readFile('assets/giftbox.svg', 'utf-8'), }, }, iconCustomizer(collection, icon, props) { const name = `${collection}:${icon}` if (name === 'inline:async' || name === 'carbon:app-connectivity' || name === 'custom:car-a') { props.width = '3em' props.height = '3em' props.color = 'skyblue' } }, }), Components({ dts: true, resolvers: [ IconsResolver({ alias: { park: 'icon-park', }, customCollections: ['custom', 'inline'], }), ], }), vueJsx(), ], resolve: { alias: { "@": pathResolve("src"), }, extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'] }, server: { port: 3000, open: true, host: '0.0.0.0', fs: { strict: false, } } })