| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import { fileURLToPath, URL } from 'node:url'
- import AutoImport from 'unplugin-auto-import/vite'
- import Components from 'unplugin-vue-components/vite'
- import { VantResolver } from '@vant/auto-import-resolver'
- import { defineConfig, loadEnv, UserConfig } from 'vite'
- import vue from '@vitejs/plugin-vue'
- // https://vite.dev/config/
- export default defineConfig(({ mode }): UserConfig => {
- const root = process.cwd()
- const env = loadEnv(mode, root)
- // const isProduction = mode === 'production'
- return {
- plugins: [
- vue(),
- AutoImport({
- resolvers: [VantResolver()],
- }),
- Components({
- resolvers: [VantResolver()],
- }),
- ].filter(Boolean),
- resolve: {
- alias: {
- '@': fileURLToPath(new URL('./src', import.meta.url)),
- },
- },
- server: {
- open: false,
- proxy: {
- '/api': {
- target: env.VITE_APP_URL,
- changeOrigin: true,
- rewrite: (path) => path.replace(/^\/api/, ''),
- },
- },
- },
- build: {
- rollupOptions: {
- output: {
- entryFileNames: `assets/[name].[hash].js`,
- chunkFileNames: `assets/[name].[hash].js`,
- assetFileNames: `assets/[name].[hash].[ext]`,
- // 使用 Vite 原生 manualChunks 替代 chunk-split 插件
- manualChunks(id: string) {
- if (id.includes('node_modules')) {
- if (id.includes('lodash-es')) return 'vendor-lodash'
- if (id.includes('echarts')) return 'vendor-echarts'
- return 'vendor'
- }
- },
- },
- },
- },
- }
- })
|