import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import legacy from '@vitejs/plugin-legacy' // 导入浏览器版本兼容插件 import viteCompression from 'vite-plugin-compression' // 使用 gzip 或 brotli 压缩资源 import eslintPlugin from 'vite-plugin-eslint' // 导入eslint插件 import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' // 导入生成svg插件 // 引入 element-plus 自动导入插件 import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' // eslint-disable-next-line @typescript-eslint/no-var-requires const path = require('path') // https://cn.vitejs.dev/config/ export default defineConfig({ base: './', // 配置开发服务器 server: { host: '0.0.0.0', // 域名 port: 80, // 端口号 open: false, // open 在开发服务器启动时自动在浏览器中打开应用程序 // https: false, // https协议 // hrm: false, // 禁用或配置 HMR 连接(用于 HMR websocket 必须使用不同的 http 服务器地址的情况)。 // 反向代理 proxy: { '/api': { target: 'http://192.168.0.200:8079', // 代理的请求地址 secure: false, // false为http访问,true为https访问 changeOrigin: true, // 是否跨域 ws: true, // websocket支持 rewrite: (path) => path.replace(/^\/api/, '') // 路径重写 } } }, // 路径别名(软链接) resolve: { alias: { '@': path.resolve(__dirname, 'src'), // 把 @ 符号映射到 src 文件夹 src: path.resolve(__dirname, 'src'), // 把 src 映射到 src 文件夹 views: path.resolve(__dirname, 'src/views'), // 把 views 映射到 src/views 文件夹 components: path.resolve(__dirname, 'src/components') // 把 components 映射到 src/components 文件夹 }, extensions: ['.js', '.jsx', '.json', '.ts', '.tsx', '.vue'] // 使用路径别名时想要省略的后缀名,可以自己 增减 }, // 配置css预处理器 css: { postcss: { plugins: [ // 导入css自动添加前缀兼容插件 require('autoprefixer') ] }, preprocessorOptions: { scss: { // 注册为全局样式可用 页面内不用导入scss additionalData: '@import "./src/assets/styles/mixin.scss";' } } }, // 配置插件 plugins: [ // 注册 vue vue(), // gzip 压缩 viteCompression(), // 注册 eslint 插件 eslintPlugin({ include: ['src/**/*.vue', 'src/**/*.js', 'src/**/*.jsx', 'src/**/*.ts', 'src/**/*.tsx'], exclude: ['./node_modules/**'], cache: false }), // 浏览器兼容插件 legacy({ targets: ['defaults', 'not IE 11'] }), // 注册 svg createSvgIconsPlugin({ // 指定需要缓存的图标文件夹 iconDirs: [path.resolve(process.cwd(), 'src/assets/icons/svg')], // 指定symbolId格式 symbolId: 'svg-[name]' }), // 注册 element-plus 组件自动导入插件 AutoImport({ resolvers: [ElementPlusResolver()] }), Components({ resolvers: [ElementPlusResolver()] }) ], // 配置打包 build: { // outDir: 'dist', // assetsDir: 'assets', // 指定静态资源存放路径 sourcemap: false, // 是否构建source map 文件 terserOptions: { // 生产环境移除console compress: { drop_console: true, drop_debugger: true } } } })