| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- 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';
- import AutoImport from 'unplugin-auto-import/vite';
- export default defineConfig(({ command }) => {
- const isBuild = command === 'build';
- const alias = {
- '@/': resolve('src') + '/'
- };
- const plugins = [
- vue(),
- AutoImport({
- imports: ['vue', 'vue-router', 'pinia'], //自动引入vue的ref、toRefs、onmounted等,无需在页面中再次引入
- resolvers: [ElementPlusResolver()]
- })
- ];
- 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 {
- resolve: { alias },
- plugins,
- 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: 2000
- }
- };
- });
|