/*
 * @Author: Z 1518051043@qq.com
 * @Date: 2025-09-12 13:51:43
 * @LastEditors: Z 1518051043@qq.com
 * @LastEditTime: 2025-12-12 09:40:22
 * @FilePath: \yuanxinPro\vite.config.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import path from "path";
import AutoImport from "unplugin-auto-import/vite";
import pxtorem from "postcss-pxtorem";

// https://vite.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      dts: "./auto-imports.d.ts", // 项目根目录生成auto-imports.d.ts配置文件
      imports: ["vue", "vue-router", "pinia"], // 设置自动导入的模块/插件(不用开发时每次都引入生命周期才能用)
    }),
  ],

  css: {
    postcss: {
      plugins: [
        pxtorem({
          rootValue: 16, // 🔥 推荐你用100（大屏项目）
          propList: ["*"], // 所有属性都转
          selectorBlackList: [".norem"], // 忽略类
          minPixelValue: 2, // 小于2px不转
          mediaQuery: false, // 媒体查询不转
          exclude: /node_modules/i, // 忽略第三方库
        }),
      ],
    },
  },

  // 构建配置
  build: {
    target: "es2015", // 编译目标
    outDir: "dist", // 输出目录
    assetsDir: "assets", // 静态资源目录
    sourcemap: "true", // 按需开启
    minify: "esbuild", // 压缩方式
    cssCodeSplit: true, // CSS代码分割
    drop: ["console", "debugger"],

    // Rollup配置
    rollupOptions: {
      output: {
        // 代码分割策略
        manualChunks(id) {
          if (id.includes("node_modules")) {
            return "vendor";
          }
          if (id.includes("src/router")) {
            return "router";
          }
        },
        // 文件命名规则
        chunkFileNames: "js/[name]-[hash].js",
        entryFileNames: "js/[name]-[hash].js",
        assetFileNames: "assets/[ext]/[name]-[hash][extname]",
      },
      // 外部依赖排除（如有需要）
      external: ["some-cdn-library"],
    },

    // Terser压缩配置
    terserOptions: {
      compress: {
        drop_console: true, // 移除console
        drop_debugger: true, // 移除debugger
      },
      format: {
        comments: false, // 移除注释
      },
    },
  },

  //设置路径
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "./src"),
    },
  },
  server: {
    port: 8081, //指定开发服务器的端口
    // host: true,//指定开发度武器的主机名
    host: "0.0.0.0", //开发服务器将监听所有可用的网络地址（包括局域网和本地网络）
    open: true, //自动在默认浏览器上打开
    proxy: {
      "/api": {
        target: "http://121.229.107.155:19020",
        // target: 'http://192.168.1.242:19020',
        // ws: true,//代理websocked
        changeOrigin: true, //是否跨域
        secure: false, //是否https接口
        rewrite: (path) => path.replace(/^\/api/, ""), //重写请求路径,使用正则表达式将请求路径中的 /dev-api 前缀替换为空字符串。例如，/dev-api/users 将被重写为 /users，然后代理到目标服务器。
      },
    },
  },
});
