import path from 'path' import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import WindiCss from 'vite-plugin-windicss' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' import Icons from 'unplugin-icons/vite' import IconsResolver from 'unplugin-icons/resolver' import ConditionalCompile from './plugins/vite-plugin-conditional-compile' import topLevelAwait from 'vite-plugin-top-level-await' import legacy from '@vitejs/plugin-legacy' // https://vitejs.dev/config/ export default defineConfig({ resolve: { alias: { '@': path.resolve(__dirname, 'src'), '~': path.resolve(__dirname, 'src'), // '~components': path.resolve(__dirname, 'src/components'), // '~pages': path.resolve(__dirname, 'src/pages'), // '~utils': path.resolve(__dirname, 'src/utils'), // '~assets': path.resolve(__dirname, 'src/assets'), // '~styles': path.resolve(__dirname, 'src/styles'), // '~lib': path.resolve(__dirname, 'src/lib'), // '~plugins': path.resolve(__dirname, 'src/plugins'), // '~router': path.resolve(__dirname, 'src/router'), // '~store': path.resolve(__dirname, 'src/store'), // '~config': path.resolve(__dirname, 'src/config'), // '~api': path.resolve(__dirname, 'src/api'), // '~constants': path.resolve(__dirname, 'src/constants'), // '~locales': path.resolve(__dirname, 'src/locales'), }, }, css: { preprocessorOptions: { scss: { additionalData: '@use "./element.scss" as *;', }, }, }, plugins: [ legacy({ targets: ['defaults', 'ie >= 11', 'chrome 52'], //需要兼容的目标列表,可以设置多个 additionalLegacyPolyfills: ['regenerator-runtime/runtime'], renderLegacyChunks: true, polyfills: [ 'es.symbol', 'es.array.filter', 'es.promise', 'es.promise.finally', 'es/map', 'es/set', 'es.array.for-each', 'es.object.define-properties', 'es.object.define-property', 'es.object.get-own-property-descriptor', 'es.object.get-own-property-descriptors', 'es.object.keys', 'es.object.to-string', 'web.dom-collections.for-each', 'esnext.global-this', 'esnext.string.match-all' ] }), 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}` }), ConditionalCompile(), vue({ reactivityTransform: true, }), WindiCss(), AutoImport({ // dts: 'src/auto-imports.d.ts', imports: ['vue', 'vue/macros', 'vue-router'], dirs: [ 'src/composables', // 'src/store', 'src/utils', ], resolvers: [ElementPlusResolver()], vueTemplate: true, eslintrc: { enabled: true, // enabled: false, // Default `false` // filepath: './.eslintrc-auto-import.json', // Default `./.eslintrc-auto-import.json` // globalsPropValue: true, // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable') }, }), Components({ // 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' }), IconsResolver()], }), Icons({ compiler: 'vue3', autoInstall: true, }), ], server: { host: true, port: 5230 }, build: { // rollupOptions: { // output: { // manualChunks: { // axios: ['axios'], // }, // }, // }, }, })