import vue from '@vitejs/plugin-vue'
// config alias
import path from 'path'
import { ConfigEnv, defineConfig, UserConfigExport, loadEnv } from 'vite'
import ViteComponents, { AntDesignVueResolver } from 'vite-plugin-components'
// Introduce eslint plugin
import eslintPlugin from 'vite-plugin-eslint'
import OptimizationPersist from 'vite-plugin-optimize-persist'
import PkgConfig from 'vite-plugin-package-config'
import viteSvgIcons from 'vite-plugin-svg-icons'
import { viteVConsole } from 'vite-plugin-vconsole'
import cesium from 'vite-plugin-cesium'
// autoImport
import AutoImport from 'unplugin-auto-import/vite'
import { CURRENT_CONFIG } from './src/api/http/config'
// https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => {
  // 添加第三个参数空字符串时 '' ,会在env中包含所有环境变量；反之，只包含.env文件中配置的环境变量
  const env = loadEnv(mode, process.cwd() + '/env')
  // eslint-disable-next-line no-useless-escape
  return {
    plugins: [
      vue(),
      cesium(),
      eslintPlugin({
        fix: true
      }),
      ViteComponents({
        customComponentResolvers: [AntDesignVueResolver()],
      }),
      viteSvgIcons({
      // 指定需要缓存的图标文件夹
        iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
        // 指定symbolId格式
        symbolId: 'icon-[dir]-[name]',
      }),
      viteVConsole({
        entry: path.resolve(__dirname, './src/main.ts'), // 入口文件
        localEnabled: command === 'serve', // serve开发环境下
        // enabled: command !== 'serve' || mode === 'test', // 打包环境下/发布测试包,
        config: { // vconsole 配置项
          maxLogNumber: 1000,
          theme: 'light'
        }
      }),
      AutoImport({
        dts: 'types/auto-imports.d.ts',
        imports: ['vue', 'vue-router'],
        // 解决eslint报错问题
        eslintrc: {
        // 这里先设置成true然后npm run dev 运行之后会生成 .eslintrc-auto-import.json 文件之后，在改为false
          enabled: false,
          filepath: './.eslintrc-auto-import.json', // 生成的文件路径
          globalsPropValue: true,
        },
      }),
      PkgConfig(),
      OptimizationPersist()
    // [svgBuilder('./src/assets/icons/')] // All svg under src/icons/svg/ have been imported here, no need to import separately
    ],
    server: {
      open: true,
      host: '0.0.0.0',
      port: 8080,
      proxy: {
        [env.VITE_BASE_API]: {
          // 代理请求之后的请求地址（你的真实接口地址)
          target: env.VITE_API_URL,
          rewrite: path => path.replace(new RegExp(`^${env.VITE_BASE_API}`), ''),
          // 跨域
          changeOrigin: true
        }
      }
    },
    envDir: './env',
    resolve: {
      alias: [{
      // https://github.com/vitejs/vite/issues/279#issuecomment-635646269
        find: '/@',
        replacement: path.resolve(__dirname, './src'),
      }
      ]
    },
    css: {
      preprocessorOptions: {
        scss: {
        // example : additionalData: `@import "./src/design/styles/variables";`
        // dont need include file extend .scss
          additionalData: '@import "./src/styles/variables";'
        },
      }
    },
    base: './',
    build: {
      target: ['es2015'], // 最低支持 es2015
      sourcemap: true
    }
  }
})
// export default ({ command, mode }: ConfigEnv): UserConfigExport => defineConfig({
//   plugins: [
//     vue(),
//     cesium(),
//     eslintPlugin({
//       fix: true
//     }),
//     ViteComponents({
//       customComponentResolvers: [AntDesignVueResolver()],
//     }),
//     viteSvgIcons({
//       // 指定需要缓存的图标文件夹
//       iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
//       // 指定symbolId格式
//       symbolId: 'icon-[dir]-[name]',
//     }),
//     viteVConsole({
//       entry: path.resolve(__dirname, './src/main.ts'), // 入口文件
//       localEnabled: command === 'serve', // serve开发环境下
//       // enabled: command !== 'serve' || mode === 'test', // 打包环境下/发布测试包,
//       config: { // vconsole 配置项
//         maxLogNumber: 1000,
//         theme: 'light'
//       }
//     }),
//     AutoImport({
//       dts: 'types/auto-imports.d.ts',
//       imports: ['vue', 'vue-router'],
//       // 解决eslint报错问题
//       eslintrc: {
//         // 这里先设置成true然后npm run dev 运行之后会生成 .eslintrc-auto-import.json 文件之后，在改为false
//         enabled: false,
//         filepath: './.eslintrc-auto-import.json', // 生成的文件路径
//         globalsPropValue: true,
//       },
//     }),
//     PkgConfig(),
//     OptimizationPersist()
//     // [svgBuilder('./src/assets/icons/')] // All svg under src/icons/svg/ have been imported here, no need to import separately
//   ],
//   server: {
//     open: true,
//     host: '0.0.0.0',
//     port: 8080,
//     proxy: {
//       '/uav': {
//         // 代理请求之后的请求地址（你的真实接口地址)
//         target: CURRENT_CONFIG.baseURL,
//         rewrite: path => path.replace(/^\/uav/, ''),
//         // 跨域
//         changeOrigin: true
//       }
//     }
//   },
//   envDir: './env',
//   resolve: {
//     alias: [{
//       // https://github.com/vitejs/vite/issues/279#issuecomment-635646269
//       find: '/@',
//       replacement: path.resolve(__dirname, './src'),
//     }
//     ]
//   },
//   css: {
//     preprocessorOptions: {
//       scss: {
//         // example : additionalData: `@import "./src/design/styles/variables";`
//         // dont need include file extend .scss
//         additionalData: '@import "./src/styles/variables";'
//       },
//     }
//   },
//   base: './',
//   build: {
//     target: ['es2015'], // 最低支持 es2015
//     sourcemap: true
//   }
// })
