import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import legacy from '@vitejs/plugin-legacy' import { resolve } from 'path' import postcsspxtoviewport from 'postcss-px-to-viewport-8-plugin' import autoprefixer from 'autoprefixer' import Components from 'unplugin-vue-components/vite' import { VantResolver } from 'unplugin-vue-components/resolvers' function pathResolve(dir) { // eslint-disable-next-line no-undef return resolve(__dirname, '.', dir) } // https://vitejs.dev/config/ export default defineConfig({ plugins: [ vue(), Components({ resolvers: [VantResolver()] }), legacy({ targets: ['defaults', 'not IE 11', 'chrome >= 50', 'UCAndroid >= 12'], 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' ] }) ], server: { host: '0.0.0.0', cors: true, open: true, port: 5066, proxy: { // 跨域前缀写法 '/api': { target: 'http://192.168.99.223:3000', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } } }, resolve: { alias: { '@': pathResolve('src') // 路径别名 }, extensions: ['.js', '.json', '.ts', '.mjs'] // 使用路径别名时想要省略的后缀名,可以自己 增减 }, css: { postcss: { plugins: [ autoprefixer({ overrideBrowserslist: [ 'Android 4.1', 'iOS 7.1', 'Chrome > 31', 'ff > 31', 'ie >= 8' // 'last 2 versions', // 所有主流浏览器最近2个版本 ], grid: true }), postcsspxtoviewport({ unitToConvert: 'px', // 需要转换的单位,默认为"px" viewportWidth: 375, // 设计稿的视口宽度 exclude: [/node_modules/], // 解决vant375,设计稿750问题。忽略某些文件夹下的文件或特定文件 unitPrecision: 5, // 单位转换后保留的精度 propList: ['*'], // 能转化为vw的属性列表 viewportUnit: 'vw', // 希望使用的视口单位 fontViewportUnit: 'vw', // 字体使用的视口单位 selectorBlackList: [], // 需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位。 minPixelValue: 1, // 设置最小的转换数值,如果为1的话,只有大于1的值会被转换 mediaQuery: false, // 媒体查询里的单位是否需要转换单位 replace: true, // 是否直接更换属性值,而不添加备用属性 landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape) landscapeUnit: 'vw', // 横屏时使用的单位 landscapeWidth: 1125 // 横屏时使用的视口宽度 }) ] } } })