hxf/frontend/vite.config.ts

85 lines
1.9 KiB
TypeScript

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), '')
const base = process.argv.includes('--base')
? process.argv[process.argv.indexOf('--base') + 1]
: '/'; // 默认值
return {
base,
plugins: [
vue(),
AutoImport({
resolvers: [ElementPlusResolver()],
imports: [
'vue',
'vue-router',
'pinia',
{
axios: [
['default', 'axios']
]
}
],
dts: true
}),
Components({
resolvers: [ElementPlusResolver()]
})
],
resolve: {
alias: {
'@': resolve(__dirname, 'src')
}
},
server: {
port: 3000,
host: '0.0.0.0',
proxy: {
'/api': {
target: 'http://127.0.0.1:8000',
changeOrigin: true,
secure: false,
rewrite: (path) => path,
configure: (proxy, options) => {
proxy.on('proxyReq', (proxyReq, req, res) => {
// 确保Authorization头部被正确传递
if (req.headers.authorization) {
proxyReq.setHeader('Authorization', req.headers.authorization);
}
});
}
}
}
},
build: {
outDir: 'dist',
sourcemap: false,
chunkSizeWarningLimit: 1600,
rollupOptions: {
output: {
manualChunks: {
'vue-vendor': ['vue', 'vue-router', 'pinia', 'element-plus'],
}
}
}
},
css: {
preprocessorOptions: {
scss: {
additionalData: `@import "@/styles/variables.scss";"`
}
}
},
// 定义环境变量
define: {
__VITE_ENV__: JSON.stringify(env)
}
}
})