vite.config.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { fileURLToPath, URL } from 'node:url'
  2. import AutoImport from 'unplugin-auto-import/vite'
  3. import Components from 'unplugin-vue-components/vite'
  4. import { VantResolver } from '@vant/auto-import-resolver'
  5. import { defineConfig, loadEnv, UserConfig } from 'vite'
  6. import vue from '@vitejs/plugin-vue'
  7. // https://vite.dev/config/
  8. export default defineConfig(({ mode }): UserConfig => {
  9. const root = process.cwd()
  10. const env = loadEnv(mode, root)
  11. // const isProduction = mode === 'production'
  12. return {
  13. base: '/h5/',
  14. plugins: [
  15. vue(),
  16. AutoImport({
  17. resolvers: [VantResolver()],
  18. }),
  19. Components({
  20. resolvers: [VantResolver()],
  21. }),
  22. ].filter(Boolean),
  23. resolve: {
  24. alias: {
  25. '@': fileURLToPath(new URL('./src', import.meta.url)),
  26. },
  27. },
  28. server: {
  29. open: false,
  30. proxy: {
  31. '/api': {
  32. target: env.VITE_APP_URL,
  33. changeOrigin: true,
  34. rewrite: (path) => path.replace(/^\/api/, ''),
  35. },
  36. },
  37. },
  38. build: {
  39. rollupOptions: {
  40. output: {
  41. entryFileNames: `assets/[name].[hash].js`,
  42. chunkFileNames: `assets/[name].[hash].js`,
  43. assetFileNames: `assets/[name].[hash].[ext]`,
  44. // 使用 Vite 原生 manualChunks 替代 chunk-split 插件
  45. manualChunks(id: string) {
  46. if (id.includes('node_modules')) {
  47. if (id.includes('lodash-es')) return 'vendor-lodash'
  48. if (id.includes('echarts')) return 'vendor-echarts'
  49. return 'vendor'
  50. }
  51. },
  52. },
  53. },
  54. },
  55. }
  56. })