// 导入 Vite 的配置函数 import { defineConfig, loadEnv } from 'vite' // 导入 Vue 插件 import vue from '@vitejs/plugin-vue' // 导入自动导入插件,用于自动导入 API import AutoImport from 'unplugin-auto-import/vite' // 导入组件自动注册插件 import Components from 'unplugin-vue-components/vite' // 导入 Vant 组件库的解析器 import { VantResolver } from '@vant/auto-import-resolver' import path from 'node:path' import postcssPxToViewport from 'postcss-px-to-viewport-8-plugin' // 导出 Vite 配置 export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd()) return { // 配置环境变量前缀 envPrefix: 'APP_', // 配置插件 plugins: [ // 启用 Vue 插件 vue(), // 配置自动导入插件 AutoImport({ // 使用 Vant 解析器 resolvers: [VantResolver()] }), // 配置组件自动注册插件 Components({ // 使用 Vant 解析器 resolvers: [VantResolver()] }) ], css: { postcss: { plugins: [ postcssPxToViewport({ // 要转化的单位 unitToConvert: 'px', // UI设计稿的大小 viewportWidth: 375, // 转换后的精度 unitPrecision: 6, // 转换后的单位 viewportUnit: 'vw', // 字体转换后的单位 fontViewportUnit: 'vw', // 能转换的属性,*表示所有属性,!border表示border不转 propList: ['*'], // 指定不转换为视窗单位的类名, selectorBlackList: ['van-'], // 最小转换的值,小于等于1不转 minPixelValue: 1, // 是否在媒体查询的css代码中也进行转换,默认false mediaQuery: false, // 是否转换后直接更换属性值 replace: true, // 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件 exclude: [/node_modules/], // 包含那些文件或者特定文件 include: [], // 是否处理横屏情况 landscape: false }) ] }, preprocessorOptions: { scss: { silenceDeprecations: ['legacy-js-api'], additionalData: `@use "@/assets/style/variables.scss";` } } }, resolve: { alias: { '@': path.resolve(__dirname, './src') } }, server: { host: '0.0.0.0', proxy: { [env.APP_BASE_API]: { target: env.APP_BASE_SERVER_URL, changeOrigin: true } } } } })