import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import path from "path";
import { resolve, join } from "path";
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  resolve: {
    alias: {
      "@": path.resolve("./src"), // @代替src
    },
  },
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@import "./src/style/mixin.scss";`, // 此处全局的scss文件
      },
    },
  },
  server: {
    host: "0.0.0.0",
    port: 8877,
    // 是否开启 https
    // https: false,
    proxy: {
      "/hotel/ihotel/auto": {
        target: "https://chtech.ncjti.edu.cn/hotel/ihotel/auto", // 线上环境
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/hotel\/ihotel\/auto/, ""),
      },
    },
    // proxy: {
    //   "/ihotel/auto": {
    //     target: "http://192.168.161.190:8090/ihotel/auto", // 刘子麟测试环境
    //     changeOrigin: true,
    //     rewrite: (path) => path.replace(/^\/ihotel\/auto/, ""),
    //   },
    // },
    // proxy: {
    //   "/ihotel/auto": {
    //     target: "http://192.168.161.225:8090/ihotel/auto", // 万新亮测试环境
    //     changeOrigin: true,
    //     rewrite: (path) => path.replace(/^\/ihotel\/auto/, ""),
    //   },
    // },
  },
  publicDir: "public",
  base: "./",
  // 打包配置
  build: {
    target: "modules", //设置最终构建的浏览器兼容目标  //es2015(编译成es5) | modules
    outDir: "dist", // 构建得包名  默认：dist
    assetsDir: "static", // 静态资源得存放路径文件名  assets
    sourcemap: false, //构建后是否生成 source map 文件
    // brotliSize: false, // 启用/禁用 brotli 压缩大小报告。 禁用该功能可能会提高大型项目的构建性能
    chunkSizeWarningLimit: 1000, //chunk 大小警告的限制（以 kbs 为单位）默认：500
    // cssTarget: 'chrome61' //防止 vite 将 rgba() 颜色转化为 #RGBA 十六进制符号的形式  (要兼容的场景是安卓微信中的 webview 时,它不支持 CSS 中的 #RGBA 十六进制颜色符号)
    rollupOptions: {
      input: {
        index: resolve(__dirname, "index.html"),
      },
      output: {
        manualChunks(id) {
          if (id.includes("node_modules")) {
            return id
              .toString()
              .split("node_modules/")[1]
              .split("/")[0]
              .toString();
          }
        },
        chunkFileNames: "static/js/[name]-[hash].js",
        entryFileNames: "static/js/[name]-[hash].js",
        assetFileNames: "static/[ext]/name-[hash].[ext]",
      },
    },
    minify: "terser", // 项目压缩 :boolean | 'terser' | 'esbuild'
    terserOptions: {
      // 生产环境移除console
      compress: {
        drop_console: true,
        drop_debugger: true,
      },
    },
  },
});
