2025-04-28 19:41:55 +08:00
|
|
|
import { fileURLToPath, URL } from 'node:url';
|
2025-04-18 20:09:21 +08:00
|
|
|
|
2025-04-28 19:41:55 +08:00
|
|
|
import vue from '@vitejs/plugin-vue';
|
|
|
|
import { defineConfig, loadEnv } from 'vite';
|
2025-04-21 10:36:17 +08:00
|
|
|
// import electron from 'vite-plugin-electron'
|
2025-04-18 20:09:21 +08:00
|
|
|
// import vueDevTools from 'vite-plugin-vue-devtools'
|
2025-04-21 14:17:50 +08:00
|
|
|
import mkcert from "vite-plugin-mkcert";
|
2025-04-28 19:41:55 +08:00
|
|
|
import { viteMockServe } from 'vite-plugin-mock';
|
2025-04-18 20:09:21 +08:00
|
|
|
// https://vite.dev/config/
|
|
|
|
export default defineConfig(({ command, mode }) => {
|
|
|
|
const env = loadEnv(mode, process.cwd())
|
2025-04-22 20:36:03 +08:00
|
|
|
console.log('\x1b[36m%s\x1b[0m', '[VITE_APP_ENV]', env.VITE_APP_ENV)
|
|
|
|
console.log('\x1b[33m%s\x1b[0m', '[VITE_APP_BASE_API]', env.VITE_APP_BASE_API)
|
2025-04-28 19:41:55 +08:00
|
|
|
|
2025-04-18 20:09:21 +08:00
|
|
|
// 将环境变量转换为 process.env 格式
|
|
|
|
const processEnv = {}
|
|
|
|
Object.keys(env).forEach(key => {
|
|
|
|
processEnv[key] = JSON.stringify(env[key])
|
|
|
|
})
|
|
|
|
|
|
|
|
return {
|
|
|
|
plugins: [
|
|
|
|
vue(),
|
2025-04-21 14:17:50 +08:00
|
|
|
mkcert({
|
|
|
|
source: 'coding',
|
|
|
|
autoUpgrade: true,
|
|
|
|
force: true,
|
|
|
|
}),
|
2025-04-28 19:41:55 +08:00
|
|
|
viteMockServe({
|
|
|
|
mockPath: 'src/mocks',
|
|
|
|
localEnabled: true,
|
|
|
|
prodEnabled: false,
|
|
|
|
supportTs: true,
|
|
|
|
watchFiles: true,
|
|
|
|
logger: true,
|
|
|
|
injectFile: 'src/main.js',
|
|
|
|
injectCode: `
|
|
|
|
import { setupProdMockServer } from 'src/mocks/index.js';
|
|
|
|
setupProdMockServer();
|
|
|
|
`,
|
|
|
|
|
|
|
|
}),
|
2025-04-21 10:36:17 +08:00
|
|
|
// electron({
|
|
|
|
// entry: 'electron/main.js',
|
|
|
|
// }),
|
2025-04-18 20:09:21 +08:00
|
|
|
// vueDevTools(),
|
|
|
|
],
|
|
|
|
resolve: {
|
|
|
|
alias: {
|
|
|
|
'@': fileURLToPath(new URL('./src', import.meta.url))
|
|
|
|
}
|
|
|
|
},
|
2025-04-20 19:46:51 +08:00
|
|
|
css: {
|
|
|
|
preprocessorOptions: {
|
|
|
|
scss: {
|
2025-04-22 20:36:03 +08:00
|
|
|
api: 'modern-compiler'
|
2025-04-20 19:46:51 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2025-04-18 20:09:21 +08:00
|
|
|
server: {
|
2025-04-21 14:17:50 +08:00
|
|
|
host: true,
|
2025-04-21 16:30:44 +08:00
|
|
|
port: 31003,
|
2025-04-21 14:17:50 +08:00
|
|
|
https: true,
|
|
|
|
cors: true,
|
2025-04-18 20:09:21 +08:00
|
|
|
proxy: {
|
|
|
|
'/api': {
|
|
|
|
target: env.VITE_APP_BASE_API,
|
|
|
|
changeOrigin: true,
|
|
|
|
rewrite: (path) => path.replace(/^\/api/, ''),
|
2025-04-21 14:17:50 +08:00
|
|
|
secure: false,
|
2025-04-28 19:41:55 +08:00
|
|
|
ws: true,
|
2025-04-21 14:17:50 +08:00
|
|
|
configure: (proxy, options) => {
|
2025-04-28 19:41:55 +08:00
|
|
|
|
2025-04-21 14:17:50 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
build: {
|
|
|
|
rollupOptions: {
|
|
|
|
output: {
|
|
|
|
manualChunks: {
|
|
|
|
'vendor': ['vue', 'vue-router', 'pinia']
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
chunkSizeWarningLimit: 1500,
|
|
|
|
terserOptions: {
|
|
|
|
compress: {
|
|
|
|
// drop_console: true,
|
|
|
|
drop_debugger: true
|
2025-04-18 20:09:21 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
define: {
|
2025-04-28 19:41:55 +08:00
|
|
|
'process.env': processEnv
|
2025-04-18 20:09:21 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|