tapi/z_ele/vite.config.ts
u2nyakim 78cbfb21d5 up.
2025-08-22 10:46:24 +08:00

76 lines
1.7 KiB
TypeScript

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import { resolve } from 'path';
import Compression from 'vite-plugin-compression';
import Components from 'unplugin-vue-components/vite';
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
import { EleAdminResolver } from 'ele-admin-plus/es/utils/resolvers';
export default defineConfig(({ command }) => {
const isBuild = command === 'build';
const alias = {
'@/': resolve('src') + '/',
'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js'
};
const plugins = [vue()];
if (isBuild) {
// 组件按需引入
plugins.push(
Components({
dts: false,
resolvers: [
ElementPlusResolver({
importStyle: 'sass'
}),
EleAdminResolver({
importStyle: 'sass'
})
]
})
);
// gzip压缩
plugins.push(
Compression({
disable: !isBuild,
threshold: 10240,
algorithm: 'gzip',
ext: '.gz'
})
);
} else {
// 开发环境全局安装
alias['./as-needed'] = './global-import';
}
return {
base: '',
resolve: { alias },
plugins,
server: {
allowedHosts: ['a.tcp.run']
},
css: {
preprocessorOptions: {
scss: {
additionalData: `@use "@/styles/variables.scss" as *;`
}
}
},
optimizeDeps: {
include: [
'echarts/core',
'echarts/charts',
'echarts/renderers',
'echarts/components',
'vue-echarts',
'echarts-wordcloud',
'sortablejs',
'vuedraggable'
]
},
build: {
target: 'chrome63',
chunkSizeWarningLimit: 4000
}
};
});