Skip to content

Vite 打包优化

ts
import path from "path";
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import AutoImport from "unplugin-auto-import/vite";

export default defineConfig({
  build: {
    rollupOptions: {
      output: {
        manualChunks(id) {
          const result = id.substring(id.indexOf("node_modules"), id.length);
          if (result.includes("node_modules")) {
            if (result.includes("vue")) {
              return "vue"; // 其他 Vue 相关代码
            }
            if (result.includes("vue-router")) {
              return "vue-router"; // 单独拆分 vue-router
            }
            if (result.includes("pinia")) {
              return "pinia"; // 单独拆分 pinia
            }
            if (result.includes("axios")) {
              return "axios"; // 单独拆分 axios
            }
            if (result.includes("uuid")) {
              return "uuid"; // 单独拆分 uuid
            }
            if (result.includes("crypto-js")) {
              return "crypto-js"; // 单独拆分 crypto-js
            }
            if (result.includes("echarts")) {
              return "echarts"; // 单独拆分 echarts
            }
            if (result.includes("vue-simple-password-meter")) {
              return "vue-simple-password-meter"; // 单独拆分 vue-simple-password-meter
            }
            if (result.includes("vant")) {
              return "vant"; // 单独拆分 vant
            }
            if (result.includes("engine.io-parser")) {
              return "engine.io-parser"; // 单独拆分 engine.io-parser
            }
            if (result.includes("socket.io")) {
              return "socket.io"; // 单独拆分 socket.io
            }
            if (result.includes("zrender")) {
              return "zrender"; // 单独拆分 zrender
            }
            return "vendor"; // 其他依赖
          }
        },
      },
    },
  },
  plugins: [
    vue(),
    vueJsx(),
    AutoImport({
      imports: ["vue", "vue-router"],
      dts: "src/auto-imports.d.ts",
      eslintrc: {
        enabled: true,
      },
    }),
  ],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "src"), // 配置 @ 指向 src 目录
    },
  },
  server: {
    proxy: {
      // xxx
    },
  },
});