import { resolve } from 'path'; import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import vueJsx from '@vitejs/plugin-vue-jsx'; import svgLoader from 'vite-svg-loader'; import AutoImport from 'unplugin-auto-import/vite'; import Components from 'unplugin-vue-components/vite'; import UnoCSS from 'unocss/vite'; import configArcoStyleImportPlugin from './config/plugin/arcoStyleImport'; export default defineConfig({ server: { open: true, fs: { strict: true, }, historyApiFallback: true, proxy: { '/api/trackApi': { target: 'http://43.139.210.35:8889', changeOrigin: true, rewrite: (path) => path.replace(/^\/api\/trackApi/, ''), configure: (proxy, options) => { proxy.on('error', (err, req, res) => { console.log('proxy error', err); }); proxy.on('proxyReq', (proxyReq, req, res) => { console.log('Sending Request to the Target:', req.method, req.url); }); proxy.on('proxyRes', (proxyRes, req, res) => { console.log( 'Received Response from the Target:', proxyRes.statusCode, req.url ); }); }, }, '/api': { target: 'http://43.139.210.35:8888', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, ''), timeout: 30000, proxyTimeout: 30000, configure: (proxy, options) => { // 保持现有配置... proxy.on('proxyReq', (proxyReq, req, res) => { console.log('[8888] Sending Request:', req.method, req.url); console.log('[8888] Proxy Target:', proxyReq.path); }); proxy.on('proxyRes', (proxyRes, req, res) => { console.log( '[8888] Received Response:', proxyRes.statusCode, req.url ); }); }, }, }, }, plugins: [ // eslint({ // cache: false, // include: ['src/**/*.ts', 'src/**/*.tsx', 'src/**/*.vue'], // exclude: ['node_modules'], // }), vue(), vueJsx(), svgLoader({ svgoConfig: {} }), configArcoStyleImportPlugin(), UnoCSS(), AutoImport({ imports: ['vue', 'vue-router', 'vue-i18n', 'pinia', '@vueuse/core'], dts: 'src/auto-imports.d.ts', dirs: ['src/composables', 'src/store'], vueTemplate: true, eslintrc: { enabled: true, }, }), Components({ extensions: ['vue'], include: [/\.vue$/, /\.vue\?vue/], dts: 'src/components.d.ts', dirs: ['src/components'], resolvers: [], // directoryAsNamespace: true, }), ], resolve: { alias: [ { find: '@', replacement: resolve(__dirname, './src'), }, { find: 'assets', replacement: resolve(__dirname, './src/assets'), }, { find: 'vue-i18n', replacement: 'vue-i18n/dist/vue-i18n.cjs.js', // Resolve the i18n warning issue }, { find: 'vue', replacement: 'vue/dist/vue.esm-bundler.js', // compile template }, { find: 'xe-utils', replacement: resolve( __dirname, './node_modules/.pnpm/xe-utils@3.7.5/node_modules/xe-utils' ), // Add xe-utils alias }, ], extensions: ['.ts', '.js'], }, define: { 'process.env': {}, __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'false', __VUE_OPTIONS_API__: 'true', __VUE_PROD_DEVTOOLS__: 'false', }, optimizeDeps: { include: ['monaco-editor'], }, build: { rollupOptions: { output: { manualChunks: { 'monaco-editor': ['monaco-editor'], }, }, }, }, css: { preprocessorOptions: { less: { modifyVars: { hack: `true; @import (reference) "${resolve( './src/assets/style/breakpoint.less' )}";`, }, javascriptEnabled: true, }, }, }, });