133 lines
3.7 KiB
JavaScript
Raw Normal View History

2025-01-23 01:10:59 +00:00
/*
* @Descripttion:
* @Author: zenghua.wang
* @Date: 2022-09-18 21:24:29
2025-02-10 05:54:41 +00:00
* @LastEditors: zenghua.wang
2025-02-27 01:24:25 +00:00
* @LastEditTime: 2025-02-27 09:16:00
2025-01-23 01:10:59 +00:00
*/
import { defineConfig, loadEnv } from 'vite';
import vue from '@vitejs/plugin-vue';
import qiankun from 'vite-plugin-qiankun';
import eslintPlugin from 'vite-plugin-eslint';
import vueSetupExtend from 'vite-plugin-vue-setup-extend';
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons';
import compression from 'vite-plugin-compression';
import { viteMockServe } from 'vite-plugin-mock';
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
import postcssImport from 'postcss-import';
import autoprefixer from 'autoprefixer';
import { resolve } from 'path';
const useDevMode = true;
export default defineConfig(({ command, mode }) => {
2025-02-27 01:24:25 +00:00
const { VITE_PORT, VITE_APP_NAME, VITE_APP_BASE_API, VITE_APP_BASE_URL, VITE_APP_UPLOAD_API, VITE_APP_UPLOAD_URL } = loadEnv(mode, process.cwd());
2025-01-23 01:10:59 +00:00
const config = {
2025-02-17 06:43:55 +00:00
base: '/sub-government-affairs-service/',
2025-01-23 01:10:59 +00:00
build: {
target: 'ESNext',
outDir: 'dist',
minify: 'terser',
2025-02-27 01:24:25 +00:00
terserOptions: {
compress: {
drop_console: true,
drop_debugger: true,
pure_funcs: ['console.log'],
},
output: {
comments: true,
},
},
reportCompressedSize: false,
chunkSizeWarningLimit: 2000,
rollupOptions: {
output: {
manualChunks(id) {
if (id.includes('node_modules')) {
return id.toString().split('node_modules/')[1].split('/')[1].toString();
}
},
chunkFileNames: 'assets/js/[name]-[hash].js',
entryFileNames: 'assets/js/[name]-[hash].js',
assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
},
},
2025-01-23 01:10:59 +00:00
},
server: {
host: '0.0.0.0',
port: VITE_PORT,
open: true,
https: false,
headers: {
'Access-Control-Allow-Origin': '*',
},
proxy: {
[VITE_APP_BASE_API]: {
target: VITE_APP_BASE_URL,
changeOrigin: true,
2025-02-10 06:59:30 +00:00
rewrite: (path) => path.replace(/^\/apis/, ''),
2025-01-23 01:10:59 +00:00
},
[VITE_APP_UPLOAD_API]: {
target: VITE_APP_UPLOAD_URL,
changeOrigin: true,
rewrite: (path) => path.replace(/^\/uploadApis/, ''),
},
},
},
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
2025-02-14 01:48:22 +00:00
'#': resolve(__dirname, '../main/src'),
2025-01-23 01:10:59 +00:00
},
extensions: ['.js', '.vue', '.json', '.ts'],
},
css: {
preprocessorOptions: {
scss: {
additionalData: '@import "@/styles/global.scss";',
api: 'modern-compiler',
},
},
postcss: {
plugins: [
postcssImport,
autoprefixer({
overrideBrowserslist: ['> 1%', 'last 2 versions'],
}),
],
},
},
plugins: [
vue(),
qiankun(VITE_APP_NAME, { useDevMode }),
vueSetupExtend(),
eslintPlugin({
include: ['src/**/*.ts', 'src/**/*.vue', 'src/*.ts', 'src/*.vue'],
}),
Components({
dirs: ['src/components'],
extensions: ['vue', 'js', 'jsx', 'ts', 'tsx'],
resolvers: [],
}),
compression(),
AutoImport({
include: [/\.[tj]s?$/, /\.vue$/],
imports: ['vue', 'vue-router'],
}),
createSvgIconsPlugin({
iconDirs: [resolve(process.cwd(), 'src/assets/svgs')],
symbolId: 'icon-[name]',
}),
viteMockServe({
mockPath: 'src/mock',
watchFiles: true,
localEnabled: command === 'dev',
prodEnabled: false,
}),
],
};
return config;
});