vite.config.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { fileURLToPath, URL } from 'node:url'
  2. import path from 'path'
  3. import { defineConfig, loadEnv, splitVendorChunkPlugin } from 'vite'
  4. import vue from '@vitejs/plugin-vue'
  5. import vueJsx from '@vitejs/plugin-vue-jsx'
  6. import AutoImport from 'unplugin-auto-import/vite'
  7. import Components from 'unplugin-vue-components/vite'
  8. import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
  9. import { createStyleImportPlugin, VxeTableResolve } from 'vite-plugin-style-import'
  10. import Unocss from 'unocss/vite'
  11. export default defineConfig(({ mode }) => {
  12. const env = loadEnv(mode, process.cwd(), '')
  13. return {
  14. plugins: [
  15. vue(),
  16. vueJsx(),
  17. Unocss(),
  18. AutoImport({
  19. imports: ['vue', 'vue-router', 'pinia', '@vueuse/core'],
  20. dts: 'src/auto-import.d.ts'
  21. }),
  22. Components({
  23. dirs: ['src/components'],
  24. extensions: ['vue'],
  25. dts: 'src/components.d.ts'
  26. }),
  27. createSvgIconsPlugin({
  28. iconDirs: [path.resolve(process.cwd(), 'src/assets/svg')],
  29. symbolId: 'icon-[dir]-[name]'
  30. }),
  31. createStyleImportPlugin({
  32. resolves: [VxeTableResolve()]
  33. }),
  34. splitVendorChunkPlugin()
  35. ],
  36. resolve: {
  37. alias: {
  38. '@': fileURLToPath(new URL('./src', import.meta.url))
  39. }
  40. },
  41. server: {
  42. proxy: {
  43. [env.VITE_BASE_API]: {
  44. target: env.VITE_BASE_PATH,
  45. changeOrigin: true
  46. }
  47. },
  48. hmr: {
  49. overlay: false
  50. }
  51. }
  52. }
  53. })