import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import vueJsx from '@vitejs/plugin-vue-jsx' //图片压缩工具 import { ViteImageOptimizer } from 'vite-plugin-image-optimizer' //打包分析工具 // import { visualizer } from 'rollup-plugin-visualizer' import unoCss from 'unocss/vite' //集成tailwind中类样式 preseUno import { presetUno } from 'unocss' //将rem转换为px设置 import presetRemToPx from '@unocss/preset-rem-to-px' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' import ElementPlus from 'unplugin-element-plus/vite' // https://vitejs.dev/config/ export default defineConfig({ plugins: [ vue(), vueJsx(), unoCss({ presets: [ presetUno(), presetRemToPx({ baseFontSize: 4 }) ], //规则 rules: [ [ 'menu_active', { color: '#1870ff', 'background-image': 'url("@/assets/images/Layout/选中模式.png")', 'background-size': '100% 100%' } ], [ /^bg-\[(.*)\]$/, ([, url]) => ({ 'background-image': `url('@/${url}')`, 'background-size': '100% 100%' }) ] ], //组合样式 shortcuts: {} }), ElementPlus({}), AutoImport({ resolvers: [ElementPlusResolver()] }), Components({ resolvers: [ElementPlusResolver()] }), ViteImageOptimizer() // visualizer({ open: true }) ], base: './', resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } }, server: { host: true, cors: true, open: true, proxy: { '/api': { target: 'http://192.168.110.235:8091', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } } }, css: { preprocessorOptions: { scss: { additionalData: `@import "./src/styles/variable.scss";` } } } })