import { defineConfig, loadEnv } from "vite";
import vue from "@vitejs/plugin-vue";
import { viteMockServe } from "vite-plugin-mock"; //mockjs
import path from "path";

import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";

// 如果编辑器提示 path 模块找不到，则可以安装一下 @types/node -> npm i @types/node -D
import { resolve } from "path";
// https://vitejs.dev/config/

export default ({ command, mode }) => {
  //参数mode为开放模式或生产模式
  const env = loadEnv(mode, process.cwd()); // 获取.env文件里定义的环境变量

  return defineConfig({
    plugins: [
      vue(),
      AutoImport({
        resolvers: [ElementPlusResolver()], //按需加载组件官网
      }),
      Components({
        resolvers: [ElementPlusResolver()], //按需加载组件官网
      }),
      viteMockServe({
        mockPath: "./src/mock/", // 指向mock下的文件
        localEnabled: false, // 是否开启开发环境
      }),
    ],

    resolve: {
      alias: {
        "@": resolve(__dirname, "src"), // 设置 `@` 指向 `src` 目录
        "~script": path.resolve(__dirname, "./src/script"),
      },
    },
    //项目部署在主域名的子文件使用,例如http://localhost:3000/myvite/。不填默认就是/
    // base: env.VITE_APP_BASE_URL || "/", // 设置打包路径
    base: "./",
    server: {
      host: "127.0.0.1",
      allowedHosts: true,
      port: 4000, // 设置服务启动端口号
      // port: Number(loadEnv(mode, process.cwd()).VITE_APP_PORT),

      strictPort: true, // 端口被占用直接退出
      https: false,
      open: true, // 在开发服务器启动时自动在浏览器中打开应用程序
      cors: true, // 允许跨域

      // 设置代理，根据我们项目实际情况配置
      proxy: {
        "/api": {
          // target: "http://192.168.1.63/api/",
          // target: "http://192.168.1.133:18093",
          //target: "http://192.168.1.62:10215",
          // target: 'http://192.168.1.127:18093', //cdf
          target: "http://192.168.1.103:19001", //cdf
          changeOrigin: true,
          secure: false,
          rewrite: (path) => path.replace(/^\/api/, ""),
        },
        // '/dev-api': {
        //   // target: 'http://xxx.xxx.xxx.xxx:8000',
        //   target: mode==='development'?env.VITE_APP_BASE_API:env.VITE_APP_BASE_URL,
        //   changeOrigin: true,
        //   secure: false,
        //   rewrite: (path) => path.replace(/^\/dev-api/, '')
        // }
      },
      hmr: {
        overlay: true, // 屏蔽服务器报错
      },
    },
    css: {
      // css预处理器
      preprocessorOptions: {
        scss: {
          // additionalData: '@import "@/assets/scss/style.scss";'
        },
      },
    },
    build: {
      chunkSizeWarningLimit: 1500, // 分块打包，分解块，将大块分解成更小的块
      rollupOptions: {
        output: {
          manualChunks(id) {
            if (id.includes("node_modules")) {
              return id
                .toString()
                .split("node_modules/")[1]
                .split("/")[0]
                .toString();
            }
          },
        },
      },
    },
  });
};

// export default defineConfig({
//   plugins: [
//     vue(),
//     AutoImport({
//       resolvers: [ElementPlusResolver()],//按需加载组件官网
//     }),
//     Components({
//       resolvers: [ElementPlusResolver()],//按需加载组件官网
//     }),
//     viteMockServe({
//       mockPath: "./src/mock/", // 指向mock下的文件
//       localEnabled: false // 是否开启开发环境
//     })
//   ],

//   resolve: {
//     alias: {
//       '@': resolve(__dirname, 'src'),// 设置 `@` 指向 `src` 目录
//       '~script': path.resolve(__dirname, './src/script'),
//     }
//   },
//   base: './', // 设置打包路径
//   server: {
//     host: '127.0.0.1',
//     port: 4000,// 设置服务启动端口号
//     strictPort: true, // 端口被占用直接退出
//     https: false,
//     open: true,// 在开发服务器启动时自动在浏览器中打开应用程序
//     cors: true,// 允许跨域

//     // 设置代理，根据我们项目实际情况配置
//     proxy: {
//       '/dev-api': {
//         target: 'http://xxx.xxx.xxx.xxx:8000',
//         changeOrigin: true,
//         secure: false,
//         rewrite: (path) => path.replace(/^\/dev-api/, '')
//       }
//     },
//     hmr: {
//       overlay: false // 屏蔽服务器报错
//     }
//   },
//   css: {
//     // css预处理器
//     preprocessorOptions: {
//       scss: {
//         additionalData: '@import "@/assets/styles/global.scss";'
//       }
//     }
//   },
//   build: {
//     chunkSizeWarningLimit: 1500, // 分块打包，分解块，将大块分解成更小的块
//     rollupOptions: {
//       output: {
//         manualChunks(id) {
//           if (id.includes('node_modules')) {
//             return id.toString().split('node_modules/')[1].split('/')[0].toString();
//           }
//         }
//       }
//     }
//   }
// })
