vite.config.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import { defineConfig } from 'vite';
  2. import vue from '@vitejs/plugin-vue';
  3. import { resolve } from 'path';
  4. import Compression from 'vite-plugin-compression';
  5. import Components from 'unplugin-vue-components/vite';
  6. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
  7. import { EleAdminResolver } from 'ele-admin-plus/es/utils/resolvers';
  8. export default defineConfig(({ command }) => {
  9. const isBuild = command === 'build';
  10. const alias = {
  11. '@/': resolve('src') + '/'
  12. };
  13. const plugins = [vue()];
  14. if (isBuild) {
  15. // 组件按需引入
  16. plugins.push(
  17. Components({
  18. dts: false,
  19. resolvers: [
  20. ElementPlusResolver({
  21. importStyle: 'sass'
  22. }),
  23. EleAdminResolver({
  24. importStyle: 'sass'
  25. })
  26. ]
  27. })
  28. );
  29. // gzip压缩
  30. plugins.push(
  31. Compression({
  32. disable: !isBuild,
  33. threshold: 10240,
  34. algorithm: 'gzip',
  35. ext: '.gz'
  36. })
  37. );
  38. } else {
  39. // 开发环境全局安装
  40. alias['./as-needed'] = './global-import';
  41. }
  42. return {
  43. resolve: { alias },
  44. plugins,
  45. css: {
  46. preprocessorOptions: {
  47. scss: {
  48. additionalData: `@use "@/styles/variables.scss" as *;`
  49. }
  50. }
  51. },
  52. optimizeDeps: {
  53. include: [
  54. 'echarts/core',
  55. 'echarts/charts',
  56. 'echarts/renderers',
  57. 'echarts/components',
  58. 'vue-echarts',
  59. 'echarts-wordcloud',
  60. 'sortablejs',
  61. 'vuedraggable'
  62. ]
  63. },
  64. build: {
  65. target: 'chrome63',
  66. chunkSizeWarningLimit: 2000
  67. }
  68. };
  69. });