wx/vite.config.js

94 lines
2.4 KiB
JavaScript

import { fileURLToPath, URL } from 'node:url'
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
// import electron from 'vite-plugin-electron'
// import vueDevTools from 'vite-plugin-vue-devtools'
import mkcert from "vite-plugin-mkcert";
// https://vite.dev/config/
export default defineConfig(({ command, mode }) => {
const env = loadEnv(mode, process.cwd())
console.log('env', env)
// 将环境变量转换为 process.env 格式
const processEnv = {}
Object.keys(env).forEach(key => {
processEnv[key] = JSON.stringify(env[key])
})
return {
plugins: [
vue(),
mkcert({
source: 'coding',
autoUpgrade: true,
force: true,
}),
// electron({
// entry: 'electron/main.js',
// }),
// vueDevTools(),
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
},
css: {
preprocessorOptions: {
scss: {
additionalData: ``
}
}
},
server: {
host: true,
https: true,
cors: true,
proxy: {
'/api': {
target: env.VITE_APP_BASE_API,
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''),
secure: false,
configure: (proxy, options) => {
proxy.on('proxyReq', (proxyReq, req, res) => {
proxyReq.setHeader('Origin', env.VITE_APP_BASE_API);
proxyReq.setHeader('Access-Control-Request-Method', '*');
if (req.url.includes('chat-messages')) {
proxyReq.setHeader('Accept', 'text/event-stream');
}
});
proxy.on('proxyRes', (proxyRes, req, res) => {
if (req.url.includes('chat-messages')) {
proxyRes.headers['content-type'] = 'text/event-stream';
proxyRes.headers['Cache-Control'] = 'no-cache';
proxyRes.headers['Connection'] = 'keep-alive';
}
});
}
}
}
},
build: {
rollupOptions: {
output: {
manualChunks: {
'vendor': ['vue', 'vue-router', 'pinia']
}
}
},
chunkSizeWarningLimit: 1500,
terserOptions: {
compress: {
// drop_console: true,
drop_debugger: true
}
}
},
define: {
'process.env': processEnv
}
}
})