import presetAttributify from '@unocss/preset-attributify'; import presetUno from '@unocss/preset-uno'; import vue from '@vitejs/plugin-vue'; import vueJsx from '@vitejs/plugin-vue-jsx'; import unocss from 'unocss/vite'; import autoImport from 'unplugin-auto-import/vite'; import IconsResolver from 'unplugin-icons/resolver'; import icons from 'unplugin-icons/vite'; import { ElementPlusResolver, VantResolver } from 'unplugin-vue-components/resolvers'; import components from 'unplugin-vue-components/vite'; import DefineOptions from 'unplugin-vue-define-options/vite'; import { defineConfig } from 'vite'; import inspect from 'vite-plugin-inspect'; import svgLoader from 'vite-svg-loader'; const autoImportOptions = { imports: ['vue', 'vue-router', 'pinia', '@vueuse/core'], dirs: ['src/components'], vueTemplate: true, eslintrc: { enabled: true, }, }; const componentoptions = { resolvers: [ IconsResolver({ enabledCollections: ['ep'], }), ElementPlusResolver(), VantResolver(), ], }; const unocssOptions = { presets: [presetAttributify(), presetUno()], }; export default defineConfig({ base: '/web-template-vue/', build: { target: 'esnext', // top await module: 'esm', }, resolve: { alias: { '~/': new URL('./src/', import.meta.url).pathname, 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js', }, }, plugins: [ vue(), vueJsx(), DefineOptions(), inspect(), autoImport(autoImportOptions), unocss(unocssOptions), icons(), svgLoader(), components(componentoptions), ], });