demo-ui/vite.config.ts

116 lines
4.1 KiB
TypeScript
Raw Normal View History

2025-02-21 09:14:45 +08:00
import { ConfigEnv, defineConfig, loadEnv, UserConfigExport } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import { resolve } from 'path'
import viteCompression from 'vite-plugin-compression'
import { ArcoResolver } from 'unplugin-vue-components/resolvers'
import Components from 'unplugin-vue-components/vite'
import AutoImport from 'unplugin-auto-import/vite'
const autoImport = AutoImport({
imports: ['vue', 'vue-router', '@vueuse/core'],
resolvers: [ArcoResolver()],
eslintrc: {
enabled: true
}
})
// Ensure .d.ts file is created when running `vite optimize`
autoImport.buildStart()
// https://vitejs.dev/config/
export default async (config: ConfigEnv): Promise<UserConfigExport> => {
return defineConfig({
plugins: [
vue(),
vueJsx(),
viteCompression(),
autoImport,
Components({
resolvers: [
ArcoResolver({
sideEffect: false
}),
{
type: 'component',
resolve: (name: string) => {
if (name === 'IconPark') {
return {
name,
from: '@icon-park/vue-next/es/all'
}
}
return undefined
}
}
],
dirs: ['src/components'],
extensions: ['vue']
})
],
css: {
preprocessorOptions: {
scss: { charset: false }
// less: {
// modifyVars: {
// 'arcoblue-1': '#E8FAFF',
// 'arcoblue-2': '#B0E0F2',
// 'arcoblue-3': '#7DC5E4',
// 'arcoblue-4': '#4EA9D7',
// 'arcoblue-5': '#258DC9',
// 'arcoblue-6': '#0071bc',
// 'arcoblue-7': '#005BA0',
// 'arcoblue-8': '#004784',
// 'arcoblue-9': '#003468',
// 'arcoblue-10': '#00244D'
// },
// javascriptEnabled: true
// }
}
},
resolve: {
alias: {
'@': resolve(__dirname, 'src') // 设置 `@` 指向 `src` 目录
}
},
build: {
manifest: true,
cssCodeSplit: true, // 如果设置为false整个项目中的所有 CSS 将被提取到一个 CSS 文件中
sourcemap: false, // 构建后是否生成 source map 文件。如果为 true将会创建一个独立的 source map 文件
target: 'modules', // 设置最终构建的浏览器兼容目标。默认值是一个 Vite 特有的值——'modules' 还可设置为 'es2015' 'es2016'等
chunkSizeWarningLimit: 550, // 单位kb 打包后文件大小警告的限制 (文件大于此此值会出现警告)
assetsInlineLimit: 4096, // 单位字节1024等于1kb 小于此阈值的导入或引用资源将内联为 base64 编码,以避免额外的 http 请求。设置为 0 可以完全禁用此项。
minify: 'terser', // 'terser' 相对较慢,但大多数情况下构建后的文件体积更小。'esbuild' 最小化混淆更快但构建后的文件相对更大。
terserOptions: {
compress: {
// eslint-disable-next-line camelcase
drop_console: true, // 生产环境去除console
// eslint-disable-next-line camelcase
drop_debugger: true // 生产环境去除debugger
}
}
},
server: {
host: '0.0.0.0',
port: 4000, // 设置服务启动端口号
open: true, // 设置服务启动时是否自动打开浏览器
cors: true, // 允许跨域
// 设置代理,根据我们项目实际情况配置
proxy: {
// 项目根目录新建 .env.development 文件,填入 VITE_BASE_URL=http://xxx
'/webapi': {
target: loadEnv(config.mode, process.cwd()).VITE_HTTP_BASE_URL || 'http://127.0.0.1:8020',
changeOrigin: true,
secure: false,
rewrite: (path) => path.replace('/webapi/', '/')
},
'/sys/file': {
target: loadEnv(config.mode, process.cwd()).VITE_HTTP_BASE_URL || 'http://127.0.0.1:8020',
changeOrigin: true,
secure: false,
rewrite: (path) => path
}
}
}
})
}