70 lines
1.6 KiB
JavaScript
70 lines
1.6 KiB
JavaScript
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') + '/'
|
|
};
|
|
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 {
|
|
resolve: { alias },
|
|
plugins,
|
|
css: {
|
|
preprocessorOptions: {
|
|
scss: {
|
|
additionalData: `@use "@/styles/variables.scss" as *;`
|
|
}
|
|
}
|
|
},
|
|
optimizeDeps: {
|
|
include: [
|
|
'echarts/core',
|
|
'echarts/charts',
|
|
'echarts/renderers',
|
|
'echarts/components',
|
|
'vue-echarts',
|
|
'sortablejs',
|
|
'vuedraggable'
|
|
]
|
|
},
|
|
build: {
|
|
target: 'chrome63',
|
|
chunkSizeWarningLimit: 4000
|
|
}
|
|
};
|
|
});
|