vite.config.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import {
  2. defineConfig,
  3. type ConfigEnv,
  4. type UserConfig,
  5. type PluginOption,
  6. } from "vite";
  7. import vue from "@vitejs/plugin-vue";
  8. import { resolve } from "path";
  9. import { viteMockServe } from "vite-plugin-mock";
  10. export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
  11. // mock 模式: npm run start (mode = 'mock')
  12. // 开发模式: npm run dev (mode = 'development')
  13. const isMock = mode === "mock";
  14. // 动态配置插件
  15. const plugins: PluginOption[] = [vue()];
  16. // 仅在 mock 模式下启用 mock 插件
  17. if (isMock) {
  18. plugins.push(
  19. viteMockServe({
  20. mockPath: "src/mock",
  21. localEnabled: true,
  22. prodEnabled: false,
  23. }),
  24. );
  25. }
  26. return {
  27. plugins,
  28. resolve: {
  29. alias: {
  30. "@": resolve(__dirname, "src"),
  31. },
  32. },
  33. server: {
  34. port: 5173,
  35. open: true,
  36. // mock 模式下禁用代理,让 mock 服务处理 /api 请求
  37. proxy: isMock
  38. ? undefined
  39. : {
  40. "/api": {
  41. target: "http://localhost:8997",
  42. changeOrigin: true,
  43. // rewrite: (path) => path.replace(/^\/api/upms/, '') // 如需移除 /api 前缀可取消注释
  44. },
  45. },
  46. },
  47. };
  48. });