import { fileURLToPath, URL } from 'node:url';
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import postcssPxToViewport from 'postcss-px-to-viewport';
import commonjs from 'vite-plugin-commonjs';
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    commonjs({
      include: /utils\/map\/CityGis.Bridge.js/, // 包含的文件路径
      exclude: [], // 排除的文件路径
      extensions: ['.js'], // 需要转换的文件扩展名
      ignoreGlobal: false, // 是否忽略全局变量(例如 Buffer)
      sourceMap: false, // 是否生成源映射
      namedExports: {}, // 命名导出(名称和值)
      ignore: [], // 忽略文件的正则表达式
      transformMixedEsModules: true // 是否转换混合的 ES 模块
    })
  ],
  server: {
    port: '8090',
    host: '0.0.0.0',
    proxy: {
      '/api': {
        //apiTest是自行设置的请求前缀,按照这个来匹配请求,有这个字段的请求,就会进到代理来
        target: 'http://10.1.161.180:7878/', // 需要代理的域名
        secure: false,
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '') //重写匹配的字段,如果不需要放在请求路径上,可以重写为""
      },
      '/cityGIsApi': {
        //apiTest是自行设置的请求前缀,按照这个来匹配请求,有这个字段的请求,就会进到代理来
        target: 'http://10.1.161.113:18080/', // 需要代理的域名
        secure: false,
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/cityGIsApi/, '') //重写匹配的字段,如果不需要放在请求路径上,可以重写为""
      }
      // '^/citygis-gateway': {
      //   //apiTest是自行设置的请求前缀,按照这个来匹配请求,有这个字段的请求,就会进到代理来
      //   target: 'http://10.1.161.53:30080/', // 需要代理的域名
      //   secure: false,
      //   changeOrigin: true,
      //   rewrite: (path) => path.replace(/^\/citygis-gateway/, 'citygis-gateway/')
      // }
    }
  },
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  css: {
    postcss: {
      plugins: [
        postcssPxToViewport({
          viewportWidth: 1950, // 视窗的宽度,对应的是我们设计稿的宽度,一般是750
          viewportHeight: 1080, // 视窗的高度,根据750设备的宽度来指定,一般指定1334,也可以不配置
          unitPrecision: 3, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除)
          viewportUnit: 'vw', // 指定需要转换成的视窗单位,建议使用vw
          fontViewportUnit: 'vw',
          selectorBlackList: [], // 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名
          minPixelValue: 2, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值
          mediaQuery: true, // 允媒体查许在询中转换`px`
          propList: ['*', '!min-width', '!min-height'],
          minValue: 10
          // exclude:[/Tabbar/] //以Tabbar文件开头的不转化
        })
      ]
    }
  }
});