vite.config.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. plugins: [
  14. vue(),
  15. AutoImport({
  16. resolvers: [VantResolver()],
  17. }),
  18. Components({
  19. resolvers: [VantResolver()],
  20. }),
  21. ].filter(Boolean),
  22. resolve: {
  23. alias: {
  24. '@': fileURLToPath(new URL('./src', import.meta.url)),
  25. },
  26. },
  27. server: {
  28. open: false,
  29. proxy: {
  30. '/api': {
  31. target: env.VITE_APP_URL,
  32. changeOrigin: true,
  33. rewrite: (path) => path.replace(/^\/api/, ''),
  34. },
  35. },
  36. },
  37. build: {
  38. rollupOptions: {
  39. output: {
  40. entryFileNames: `assets/[name].[hash].js`,
  41. chunkFileNames: `assets/[name].[hash].js`,
  42. assetFileNames: `assets/[name].[hash].[ext]`,
  43. // 使用 Vite 原生 manualChunks 替代 chunk-split 插件
  44. manualChunks(id: string) {
  45. if (id.includes('node_modules')) {
  46. if (id.includes('lodash-es')) return 'vendor-lodash'
  47. if (id.includes('echarts')) return 'vendor-echarts'
  48. return 'vendor'
  49. }
  50. },
  51. },
  52. },
  53. },
  54. }
  55. })