import { defineConfig, loadEnv } from 'vite'; import { resolve } from 'path'; import path from 'path'; import createVitePlugins from './vite/plugins'; import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'; // https://vitejs.dev/config/ export default ({ mode, command }) => { const env = loadEnv(mode, process.cwd()); const { VITE_APP_ENV, VITE_APP_BASE } = env; // 判断是打生产环境包 const isProd = VITE_APP_ENV === 'production'; // 根据是否生产环境,动态设置压缩配置 const buildConfig = { target: 'esnext', minify: isProd ? 'terser' : 'esbuild', // 根据环境选择压缩工具 }; // 如果是生产环境,添加Terser的配置 if (isProd) { buildConfig.terserOptions = { compress: { drop_console: true, // 删除 console drop_debugger: true, // 删除 debugger }, format: { comments: false, // 删除所有注释 }, }; buildConfig.rollupOptions = { output: { manualChunks: { 'element-plus': ['element-plus'], '@smallwei/avue': ['@smallwei/avue'], }, }, }; } return defineConfig({ base: VITE_APP_BASE, define: { __VUE_I18N_FULL_INSTALL__: true, __VUE_I18N_LEGACY_API__: true, __INTLIFY_PROD_DEVTOOLS__: false, }, server: { port: 2888, proxy: { '/api': { // target: 'http://192.168.1.5:82', // target: "http://192.168.1.4:82", // target:'http://49.232.74.228:82', // target: "http://192.168.0.120", //target: 'https://saber3.bladex.cn/api', // target: 'http://49.232.74.228:82', // target: "http:192.168.0.220:80", // target: 'http:49.232.74.228:49', target: 'http://49.232.74.228:80', //测试环境的地址 changeOrigin: true, rewrite: path => path.replace(/^\/api/, ''), }, }, }, resolve: { alias: { '~': resolve(__dirname, './'), '@': resolve(__dirname, './src'), components: resolve(__dirname, './src/components'), styles: resolve(__dirname, './src/styles'), utils: resolve(__dirname, './src/utils'), }, }, css: { preprocessorOptions: { scss: { api: 'modern-compiler', additionalData: `@use "@/styles/variables.scss" as *;`, }, }, }, plugins: [ createVitePlugins(env, command === 'build'), createSvgIconsPlugin({ iconDirs: [path.resolve(process.cwd(), 'src/assets/svg')], symbolId: 'icon-[dir]-[name]', }), ], build: buildConfig, optimizeDeps: { esbuildOptions: { target: 'esnext', }, }, }); };