import { fileURLToPath } from 'url' import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' import path from 'path' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' import postCssPxToRem from 'postcss-pxtorem' import { univerPlugin } from "@univerjs/vite-plugin"; // https://vitejs.dev/config/ export default ({ mode }) => { const env = loadEnv(mode, process.cwd()); return defineConfig({ base: env.VITE_BASE, define: { 'process.env': env }, server: { host: '0.0.0.0', port: 5172, proxy: { '/api/invest/': { target: 'http://127.0.0.1:8080/', changeOrigin: true, rewrite: (p) => p.replace(/^\/api\/invest/, '') }, '/out-police-service/': { target: 'http://127.0.0.1:8080/', changeOrigin: true, rewrite: (p) => p.replace(/^\/out-polic-service/, '') }, } }, plugins: [ vue(), AutoImport({ imports: [ 'vue', 'vue-router' ], resolvers: [ElementPlusResolver()], }), Components({ directoryAsNamespace: true, resolvers: [ElementPlusResolver({ importStyle: "sass" })], }), createSvgIconsPlugin({ // 配置路劲在你的src里的svg存放文件 iconDirs: [fileURLToPath(new URL('./src/assets/icons', import.meta.url))], symbolId: 'local-icon-[name]' }), univerPlugin() ], resolve: { // https://cn.vitejs.dev/config/#resolve-alias alias: { // 设置别名 '~/': `${path.resolve(__dirname, 'src')}/`, '@': path.resolve(__dirname, './src/') }, // https://cn.vitejs.dev/config/#resolve-extensions extensions: ['.js', '.ts'] }, css: { preprocessorOptions: { scss: { additionalData: `@use "src/style/theme.scss" as *;` }, }, postcss: { plugins: [ postCssPxToRem({ rootValue: 192, propList: ['*'], ignoreFiles: [ 'src/views/work/VerifySubmit.vue' ] }) ] } }, build: { outDir: 'invest', sourcemap: false, chunkSizeWarningLimit: 1500, rollupOptions: { output: { entryFileNames: `assets/[name].${new Date().getTime()}.js`, chunkFileNames: `assets/[name].${new Date().getTime()}.js`, assetFileNames: `assets/[name].${new Date().getTime()}.[ext]`, compact: true, manualChunks: { vue: ['vue', 'vue-router'], echarts: ['echarts'], }, }, }, terserOptions: { compress: { drop_console: true, drop_debugger: true, }, ie8: true, output: { comments: true, }, }, } }) }