1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import path from 'path'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import IconsResolver from 'unplugin-icons/resolver'
import Icons from 'unplugin-icons/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// 打包 兼容低版本浏览器
// import legacy from '@vitejs/plugin-legacy'
// 开发环境兼容
import esbuild from 'rollup-plugin-esbuild'
const pathSrc = path.resolve(__dirname, 'src')
 
// https://vitejs.dev/config/
export default defineConfig({
  server: {
    proxy: {
      '/api-s/': {
        // http://192.168.20.119:8003 http://192.168.20.25:7010
        target: 'http://192.168.20.120:9081',
        ws: true,
        changeOrigin: true
      }
    }
  },
  resolve: {
    alias: {
      '@': pathSrc
    }
  },
 
  build: {
    minify: 'terser',
    // ,'edge90','firefox90','safari15'
    target: ['chrome52'],
    cssTarget: ['chrome52']
  },
  css: {
    postcss: {
      plugins: [
        require('postcss-pxtorem')({
          // ipad:1280-800
          rootValue: 160.0, //换算的基数, 屏幕宽度/10
          propList: ['*'] //需要转化的属性,*表示所有属性都需要转化
          // unitPrecision:5
        })
      ]
    }
  },
  plugins: [
    vue(),
    // element plus 自动导入
    AutoImport({
      // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等
      // imports: ['vue'],
      // 自动导入 Element Plus 相关函数,如:ElMessage, ElMessageBox... (带样式)
      resolvers: [
        ElementPlusResolver(),
        // 自动导入图标组件
        IconsResolver({
          prefix: 'Icon'
        })
      ],
 
      dts: path.resolve(pathSrc, 'auto-imports.d.ts')
    }),
    // 开发环境兼容
    esbuild({
      target: 'chrome64',
      loaders: {
        '.vue': 'js',
        '.ts': 'js'
      }
    }),
    // 兼容低版本浏览器
    // legacy({
    //   // ie >= 11
    //   targets: ['defaults', 'not IE 11', 'chrome < 60','firefox < 59'], //需要兼容的目标列表,可以设置多个
    //   additionalLegacyPolyfills: ['regenerator-runtime/runtime'],
    //   // renderLegacyChunks: true,
    //   modernPolyfills: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'
    //   ]
    // }),
    Components({
      resolvers: [
        // 自动注册图标组件
        IconsResolver({
          enabledCollections: ['ep']
        }),
        // 自动导入 Element Plus 组件
        ElementPlusResolver()
      ],
      dts: path.resolve(pathSrc, 'components.d.ts')
    }),
    Icons({
      autoInstall: true
    })
  ]
  // configureWebpack:config=>{
  //   config.entry.app=['babel-polyfill','./src/main.js']
  // },
  // transpileDependencies:['*']
  // chainWebpack: (config) => {
  //   config.entry('main').add('babel-polyfill')
  // },
})