vite.config.ts 1.5 KB

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