73 lines
1.8 KiB
TypeScript
73 lines
1.8 KiB
TypeScript
import type { PluginOption } from 'vite'
|
|
|
|
import tailwindcss from '@tailwindcss/vite'
|
|
import vue from '@vitejs/plugin-vue'
|
|
import vueJsx from '@vitejs/plugin-vue-jsx'
|
|
import { fileURLToPath, URL } from 'node:url'
|
|
import { visualizer } from 'rollup-plugin-visualizer'
|
|
import AutoImport from 'unplugin-auto-import/vite'
|
|
import Component from 'unplugin-vue-components/vite'
|
|
import { defineConfig } from 'vite'
|
|
import vueDevTools from 'vite-plugin-vue-devtools'
|
|
import Layouts from 'vite-plugin-vue-layouts'
|
|
import { VueRouterAutoImports } from 'vue-router/unplugin'
|
|
import VueRouter from 'vue-router/vite'
|
|
|
|
const RouteGenerateExclude = ['**/components/**', '**/layouts/**', '**/data/**', '**/types/**']
|
|
|
|
export default defineConfig({
|
|
server: {
|
|
proxy: {
|
|
'/api': {
|
|
target: 'http://localhost:5010',
|
|
changeOrigin: true,
|
|
rewrite: (path) => path.replace(/^\/api/, ''),
|
|
},
|
|
},
|
|
},
|
|
plugins: [
|
|
VueRouter({
|
|
exclude: RouteGenerateExclude,
|
|
dts: 'src/types/route-map.d.ts',
|
|
}),
|
|
vue(),
|
|
vueJsx(),
|
|
vueDevTools(),
|
|
tailwindcss(),
|
|
visualizer({ gzipSize: true, brotliSize: true }) as PluginOption,
|
|
Layouts({
|
|
defaultLayout: 'default',
|
|
}),
|
|
AutoImport({
|
|
include: [
|
|
/\.[tj]sx?$/,
|
|
/\.vue$/,
|
|
],
|
|
imports: [
|
|
'vue',
|
|
VueRouterAutoImports,
|
|
],
|
|
dirs: [
|
|
'src/composables/**/*.ts',
|
|
'src/constants/**/*.ts',
|
|
'src/stores/**/*.ts',
|
|
],
|
|
defaultExportByFilename: true,
|
|
dts: 'src/types/auto-import.d.ts',
|
|
}),
|
|
Component({
|
|
dirs: [
|
|
'src/components',
|
|
],
|
|
collapseSamePrefixes: true,
|
|
directoryAsNamespace: true,
|
|
dts: 'src/types/auto-import-components.d.ts',
|
|
}),
|
|
],
|
|
resolve: {
|
|
alias: {
|
|
'@': fileURLToPath(new URL('./src', import.meta.url)),
|
|
},
|
|
},
|
|
})
|