/// import path from 'node:path' import { defineConfig } from 'vite' import Vue from '@vitejs/plugin-vue' import Pages from 'vite-plugin-pages' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' import AutoImport from 'unplugin-auto-import/vite' import WindiCSS from 'vite-plugin-windicss' import VueMacros from 'unplugin-vue-macros/vite' import topLevelAwait from 'vite-plugin-top-level-await' export default defineConfig({ resolve: { alias: { '~/': `${path.resolve(__dirname, 'src')}/`, }, }, css: { preprocessorOptions: { scss: { additionalData: '@use "~/styles/element/index.scss" as *;', }, }, }, plugins: [ topLevelAwait({ // The export name of top-level await promise for each chunk module promiseExportName: '__tla', // The function to generate import names of top-level await promise in each chunk module promiseImportName: i => `__tla_${i}`, }), VueMacros({ plugins: { vue: Vue({ reactivityTransform: true, }), }, }), // https://github.com/hannoeru/vite-plugin-pages Pages(), // https://github.com/antfu/unplugin-auto-import AutoImport({ imports: [ 'vue', 'vue/macros', 'vue-router', '@vueuse/core', ], dts: true, dirs: [ './src/composables', './src/utils', ], vueTemplate: true, resolvers: [ ElementPlusResolver(), ], }), // https://github.com/antfu/vite-plugin-components Components({ // dts: true, // resolvers: [ // ElementPlusResolver(), // ], // dts: 'src/components.d.ts', dirs: ['src/components/'], // allow auto load markdown components under `./src/components/` extensions: ['vue', 'md'], // allow auto import and register components used in markdown include: [/\.vue$/, /\.vue\?vue/, /\.md$/], resolvers: [ElementPlusResolver({ importStyle: 'sass' })], }), WindiCSS(), ], // https://github.com/vitest-dev/vitest test: { environment: 'jsdom', }, build: { minify: 'terser', terserOptions: { compress: { drop_console: true, drop_debugger: true, }, }, }, })