vite.config.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import { fileURLToPath, URL } from "node:url";
  2. import { defineConfig, loadEnv } from "vite";
  3. import vue from "@vitejs/plugin-vue";
  4. import vueDevTools from "vite-plugin-vue-devtools";
  5. import vueJsx from "@vitejs/plugin-vue-jsx";
  6. import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
  7. import { codeInspectorPlugin } from "code-inspector-plugin";
  8. import AutoImport from "unplugin-auto-import/vite";
  9. import fs from "fs";
  10. import { resolve } from "path";
  11. // https://vite.dev/config/
  12. export default defineConfig(({ mode }) => {
  13. const env = loadEnv(mode, process.cwd());
  14. return {
  15. base: "./",
  16. plugins: [
  17. vue(),
  18. vueJsx(),
  19. AutoImport({
  20. imports: ["vue", "vue-router"],
  21. }),
  22. // vueDevTools(),
  23. createSvgIconsPlugin({
  24. // 指定需要缓存的图标文件夹
  25. iconDirs: [resolve(process.cwd(), "src/assets/svg")],
  26. // 指定symbolId格式
  27. symbolId: "icon-[dir]-[name]",
  28. }),
  29. codeInspectorPlugin({
  30. bundler: "vite",
  31. }),
  32. ],
  33. resolve: {
  34. alias: {
  35. "@": fileURLToPath(new URL("./src", import.meta.url)),
  36. },
  37. },
  38. css: {
  39. // css预处理器
  40. preprocessorOptions: {
  41. less: {
  42. charset: false, // 解决中文乱码
  43. javascriptEnabled: true,
  44. additionalData:
  45. '@import "@/assets/css/global.less";@import "@/assets/css/theme.less";',
  46. },
  47. },
  48. },
  49. build: {
  50. minify: true, // 生产环境不生成sourcemap
  51. target: "es2015",
  52. outDir: "dist",
  53. assetsDir: "static", // 与 index.html 中的路径匹配
  54. emptyOutDir: true,
  55. // 警报门槛,限制大文件大小
  56. chunkSizeWarningLimit: 5000,
  57. rollupOptions: {
  58. external: [], // 外部化处理那些你不想打包进库的依赖
  59. // 静态资源分类打包
  60. output: {
  61. chunkFileNames: "static/js/[name]-[hash].js",
  62. entryFileNames: "static/js/[name]-[hash].js",
  63. assetFileNames: "static/[ext]/[name]-[hash].[ext]",
  64. },
  65. },
  66. },
  67. server: {
  68. host: true,
  69. port: 5173,
  70. open: true,
  71. cors: true,
  72. hmr: true,
  73. https: {
  74. key: fs.readFileSync('./certDev/key.pem'),
  75. cert: fs.readFileSync('./certDev/cert.pem'),
  76. },
  77. proxy: {
  78. "/api/v2": {
  79. target: env.VITE_PRO_BACKEND_PATH,
  80. changeOrigin: true,
  81. secure: true,
  82. },
  83. "/api/v1": {
  84. target: env.VITE_PRO_IM_PATH,
  85. changeOrigin: true,
  86. secure: true,
  87. },
  88. "/api": {
  89. target: env.VITE_PRO_PATH,
  90. changeOrigin: true,
  91. secure: true,
  92. },
  93. },
  94. },
  95. };
  96. });