110 lines
3.3 KiB
TypeScript
110 lines
3.3 KiB
TypeScript
import vue from '@vitejs/plugin-vue'
|
|
import vueJsx from '@vitejs/plugin-vue-jsx'
|
|
import path from 'node:path'
|
|
import AutoImport from 'unplugin-auto-import/vite'
|
|
import Icons from 'unplugin-icons/vite'
|
|
import { IduxResolver } from 'unplugin-vue-components/resolvers'
|
|
import Components from 'unplugin-vue-components/vite'
|
|
import {
|
|
defineConfig,
|
|
loadEnv,
|
|
ProxyOptions,
|
|
UserConfigFnObject
|
|
} from 'vite'
|
|
import VueDevTools from 'vite-plugin-vue-devtools'
|
|
import processHtml from './plugin/html-process'
|
|
import zipDist from './plugin/zip-dist'
|
|
import { viteStaticCopy } from 'vite-plugin-static-copy'
|
|
import { fileWatcher } from './plugin/file-watcher'
|
|
import iconfontProcess from './plugin/iconfont-process'
|
|
|
|
let viteConfig: UserConfigFnObject = configEnv => {
|
|
const env = loadEnv(configEnv.mode, process.cwd(), '')
|
|
|
|
return {
|
|
base: env.VITE_APP_BASE_URL,
|
|
build: {
|
|
rollupOptions: {
|
|
treeshake: true,
|
|
},
|
|
},
|
|
css: {
|
|
modules: {
|
|
localsConvention: 'camelCase',
|
|
},
|
|
},
|
|
plugins: [
|
|
vue(),
|
|
vueJsx(),
|
|
VueDevTools(),
|
|
AutoImport({
|
|
imports: [ 'vue', 'vue-router', 'pinia' ],
|
|
dts: './src/dts/auto-imports.d.ts',
|
|
resolvers: [ IduxResolver() ],
|
|
}),
|
|
Components({
|
|
dts: './src/dts/components.d.ts',
|
|
resolvers: [ IduxResolver() ],
|
|
}),
|
|
processHtml(env.VITE_APP_NAME),
|
|
zipDist(),
|
|
Icons(),
|
|
fileWatcher({
|
|
file: './public/iconfont/ali/iconfont.json',
|
|
fn: iconfontProcess('./src/components/iconfont'),
|
|
}),
|
|
viteStaticCopy({
|
|
targets: [
|
|
{
|
|
src: './node_modules/@idux/components/icon/assets/*.svg',
|
|
dest: 'idux-icons',
|
|
},
|
|
],
|
|
}),
|
|
/* visualizer({
|
|
gzipSize: true,
|
|
brotliSize: true,
|
|
emitFile: false,
|
|
filename: "dist/visualizer.html",
|
|
open:true
|
|
}), */
|
|
],
|
|
resolve: {
|
|
extensions: [ '.mjs', '.js', '.mts', '.ts', '.jsx', '.tsx', '.json', '.vue' ],
|
|
alias: [
|
|
/* {
|
|
find: 'vue',
|
|
replacement: 'vue/dist/vue.esm-bundler.js',
|
|
}, */
|
|
{
|
|
find: '@',
|
|
replacement: path.resolve(__dirname, 'src'),
|
|
},
|
|
],
|
|
},
|
|
server: {
|
|
host: '0.0.0.0',
|
|
port: 80,
|
|
proxy: {
|
|
[env.VITE_OSS_UPLOAD_BASE_URL]: {
|
|
proxyTimeout: 10000,
|
|
target: 'http://localhost:9000',
|
|
rewrite: path => env.VITE_OSS_UPLOAD_BASE_URL == null || env.VITE_OSS_UPLOAD_BASE_URL == '/' ? path : path.replace(new RegExp(env.VITE_OSS_UPLOAD_BASE_URL), ''),
|
|
} as ProxyOptions,
|
|
[env.VITE_HTTP_SERVER_BASE_URL]: {
|
|
proxyTimeout: 10000,
|
|
target: env.VITE_HTTP_PROXY_TARGET,
|
|
rewrite: path => env.VITE_HTTP_SERVER_BASE_URL == null || env.VITE_HTTP_SERVER_BASE_URL == '/' ? path : path.replace(new RegExp(env.VITE_HTTP_SERVER_BASE_URL), ''),
|
|
} as ProxyOptions,
|
|
[env.VITE_WS_SERVER_BASE_URL]: {
|
|
ws: true,
|
|
target: env.VITE_WS_PROXY_TARGET,
|
|
rewrite: path => env.VITE_WS_SERVER_BASE_URL == null || env.VITE_WS_SERVER_BASE_URL == '/' ? path : path.replace(new RegExp(env.VITE_HTTP_SERVER_BASE_URL), ''),
|
|
} as ProxyOptions,
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
export default defineConfig(viteConfig)
|