zsqy-naive-ui/vite.config.ts
2024-02-05 10:47:59 +08:00

126 lines
3.5 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import vue from '@vitejs/plugin-vue';
import { UserConfig, ConfigEnv, loadEnv, defineConfig } from 'vite';
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
import Icons from 'unplugin-icons/vite';
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons';
import vueJsx from '@vitejs/plugin-vue-jsx';
import { resolve } from 'path';
const pathSrc = resolve(__dirname, 'src');
// https://cn.vitejs.dev/config
export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
const env = loadEnv(mode, process.cwd());
return {
resolve: {
alias: {
'@': pathSrc,
},
},
css: {
// CSS 预处理器
// preprocessorOptions: {
// 定义全局 SCSS 变量
// scss: {
// javascriptEnabled: true,
// additionalData: `
// @use "@/styles/variables.scss" as *;
// `,
// },
// },
},
server: {
// 允许IP访问
host: '0.0.0.0',
// 应用端口 (默认:3000)
port: Number(env.VITE_APP_PORT),
// 运行是否自动打开浏览器
open: true,
proxy: {
/**
* 反向代理解决跨域配置
* http://localhost:3000/dev-api/users (F12可见请求路径) => http://localhost:8989/users (实际请求后端 API 路径)
*
* env.VITE_APP_BASE_API: /dev-api
* env.VITE_APP_API_URL: http://localhost:8989
*/
[env.VITE_APP_BASE_API]: {
changeOrigin: true,
target: env.VITE_APP_API_URL,
rewrite: (path) =>
path.replace(new RegExp('^' + env.VITE_APP_BASE_API), ''),
},
},
},
plugins: [
vue(),
vueJsx(),
// 自动导入参考: https://github.com/sxzz/element-plus-best-practices/blob/main/vite.config.ts
AutoImport({
// 自动导入 Vue 相关函数ref, reactive, toRef 等
imports: ['vue', '@vueuse/core'],
eslintrc: {
enabled: false,
filepath: './.eslintrc-auto-import.json',
globalsPropValue: true,
},
vueTemplate: true,
// 配置文件生成位置(false:关闭自动生成)
dts: 'types/auto-imports.d.ts',
}),
Components({
resolvers: [],
// 指定自定义组件位置(默认:src/components)
dirs: ['src/components', 'src/**/components'],
// 配置文件位置 (false:关闭自动生成)
dts: 'types/components.d.ts',
}),
Icons({
autoInstall: true,
}),
createSvgIconsPlugin({
// 指定需要缓存的图标文件夹
iconDirs: [resolve(pathSrc, 'assets/svgs')],
// 指定symbolId格式
symbolId: 'icon-[dir]-[name]',
}),
],
// 预加载项目必需的组件
optimizeDeps: {
include: [
'vue',
'vue-router',
'pinia',
'axios',
'@vueuse/core',
'path-to-regexp',
'echarts',
],
},
// 构建配置
build: {
chunkSizeWarningLimit: 2000, // 消除打包大小超过500kb警告
minify: 'terser', // Vite 2.6.x 以上需要配置 minify: "terser", terserOptions 才能生效
terserOptions: {
compress: {
keep_infinity: true, // 防止 Infinity 被压缩成 1/0这可能会导致 Chrome 上的性能问题
drop_console: true, // 生产环境去除 console
drop_debugger: true, // 生产环境去除 debugger
},
format: {
comments: false, // 删除注释
},
},
},
};
});