vite.config.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import { fileURLToPath, URL } from 'node:url'
  2. import path from 'path'
  3. import { defineConfig, loadEnv } 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. import { lazyImport, VxeResolver } from 'vite-plugin-lazy-import'
  13. export default defineConfig(({ mode }) => {
  14. const env = loadEnv(mode, process.cwd(), '')
  15. return {
  16. base: '/',
  17. plugins: [
  18. vue(),
  19. vueJsx(),
  20. Unocss(),
  21. VueDevTools(),
  22. AutoImport({
  23. imports: ['vue', 'vue-router', 'pinia', '@vueuse/core'],
  24. dts: 'src/auto-import.d.ts'
  25. }),
  26. Components({
  27. dirs: ['src/components'],
  28. extensions: ['vue'],
  29. dts: 'src/components.d.ts'
  30. }),
  31. createSvgIconsPlugin({
  32. iconDirs: [path.resolve(process.cwd(), 'src/assets/svg')],
  33. symbolId: 'icon-[dir]-[name]'
  34. }),
  35. createStyleImportPlugin({
  36. resolves: [VxeTableResolve()]
  37. }),
  38. lazyImport({
  39. resolvers: [
  40. VxeResolver({
  41. libraryName: 'vxe-table'
  42. }),
  43. VxeResolver({
  44. libraryName: 'vxe-pc-ui'
  45. })
  46. ]
  47. })
  48. ],
  49. resolve: {
  50. alias: {
  51. '@': fileURLToPath(new URL('./src', import.meta.url))
  52. }
  53. },
  54. server: {
  55. proxy: {
  56. [env.VITE_BASE_API]: {
  57. target: env.VITE_BASE_PATH,
  58. changeOrigin: true
  59. }
  60. },
  61. hmr: {
  62. overlay: false
  63. }
  64. },
  65. build: {
  66. rollupOptions: {
  67. output: {
  68. manualChunks: id => {
  69. if (id.includes('node_modules')) {
  70. return 'vender'
  71. }
  72. }
  73. }
  74. }
  75. }
  76. }
  77. })