wx/vite.config.js

99 lines
2.3 KiB
JavaScript
Raw Permalink Normal View History

import { fileURLToPath, URL } from 'node:url';
import vue from '@vitejs/plugin-vue';
import { defineConfig, loadEnv } from 'vite';
// import electron from 'vite-plugin-electron'
// import vueDevTools from 'vite-plugin-vue-devtools'
import mkcert from "vite-plugin-mkcert";
import { viteMockServe } from 'vite-plugin-mock';
// https://vite.dev/config/
export default defineConfig(({ command, mode }) => {
const env = loadEnv(mode, process.cwd())
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)
// 将环境变量转换为 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,
}),
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();
`,
}),
// electron({
// entry: 'electron/main.js',
// }),
// vueDevTools(),
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
},
css: {
preprocessorOptions: {
scss: {
api: 'modern-compiler'
}
}
},
server: {
host: true,
port: 31003,
https: true,
cors: true,
proxy: {
'/api': {
target: env.VITE_APP_BASE_API,
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''),
secure: false,
ws: true,
configure: (proxy, options) => {
}
}
}
},
build: {
rollupOptions: {
output: {
manualChunks: {
'vendor': ['vue', 'vue-router', 'pinia']
}
}
},
chunkSizeWarningLimit: 1500,
terserOptions: {
compress: {
// drop_console: true,
drop_debugger: true
}
}
},
define: {
'process.env': processEnv
}
}
})