import { fileURLToPath, URL } from "node:url"; import AutoImport from "unplugin-auto-import/vite"; import Components from "unplugin-vue-components/vite"; import { VantResolver } from "@vant/auto-import-resolver"; import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import vueJsx from "@vitejs/plugin-vue-jsx"; import vueDevTools from "vite-plugin-vue-devtools"; // https://vite.dev/config/ export default defineConfig({ server: { host: "0.0.0.0", // 设置为 0.0.0.0 允许局域网访问 port: 5678, // 自定义端口号,可选 strictPort: true, // 如果端口被占用则抛出错误而不是使用下一个可用端口 proxy: { "/api/v1": { target: "http://127.0.0.1:8888", // 本地接口地址 // target: "https://onecha.cn", // 本地接口地址 changeOrigin: true, }, }, }, build: { // 构建优化 target: "es2015", // 支持更多浏览器 minify: "terser", // 使用terser进行压缩 terserOptions: { compress: { drop_console: true, // 移除console.log drop_debugger: true, // 移除debugger }, }, rollupOptions: { output: { // 代码分割策略 manualChunks: { vendor: ["vue", "vue-router", "pinia"], vant: ["vant"], utils: ["axios", "lodash", "crypto-js"], charts: ["echarts", "vue-echarts"], }, // 文件名策略 chunkFileNames: "assets/js/[name]-[hash].js", entryFileNames: "assets/js/[name]-[hash].js", assetFileNames: "assets/[ext]/[name]-[hash].[ext]", }, }, // 启用CSS代码分割 cssCodeSplit: true, // 设置资源内联阈值 assetsInlineLimit: 4096, }, plugins: [ vue(), AutoImport({ imports: [ "vue", // 自动引入 Vue Composition API,如 ref、computed、onMounted 等 "vue-router", // 自动引入 vue-router 中的方法,如 useRoute、useRouter 等(可选) "@vueuse/core", // 自动引入 VueUse 中的工具函数(可选) ], dts: "src/auto-imports.d.ts", // 生成类型定义文件(可选) dirs: ["src/composables", "src/stores", "src/components"], resolvers: [VantResolver()], }), Components({ resolvers: [VantResolver()], }), vueJsx(), // vueDevTools(), ], resolve: { alias: { "@": fileURLToPath(new URL("./src", import.meta.url)), }, }, // 优化依赖预构建 optimizeDeps: { include: ["vue", "vue-router", "pinia", "vant", "axios"], }, });