index.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import type { PluginOption } from 'vite';
  2. import vue from '@vitejs/plugin-vue';
  3. import vueJsx from '@vitejs/plugin-vue-jsx';
  4. import unocss from '@unocss/vite';
  5. import progress from 'vite-plugin-progress';
  6. import pageRoute from '@soybeanjs/vite-plugin-vue-page-route';
  7. import PurgeIcons from 'vite-plugin-purge-icons';
  8. import unplugin from './unplugin';
  9. import mock from './mock';
  10. import visualizer from './visualizer';
  11. import compress from './compress';
  12. import pwa from './pwa';
  13. /**
  14. * vite插件
  15. * @param viteEnv - 环境变量配置
  16. */
  17. export function setupVitePlugins(viteEnv: ImportMetaEnv): (PluginOption | PluginOption[])[] {
  18. const plugins = [
  19. vue({
  20. script: {
  21. defineModel: true
  22. }
  23. }),
  24. vueJsx(),
  25. ...unplugin(viteEnv),
  26. unocss(),
  27. mock(viteEnv),
  28. progress(),
  29. pageRoute(),
  30. PurgeIcons()
  31. ];
  32. if (viteEnv.VITE_VISUALIZER === 'Y') {
  33. plugins.push(visualizer as PluginOption);
  34. }
  35. if (viteEnv.VITE_COMPRESS === 'Y') {
  36. plugins.push(compress(viteEnv));
  37. }
  38. if (viteEnv.VITE_PWA === 'Y' || viteEnv.VITE_VERCEL === 'Y') {
  39. plugins.push(pwa());
  40. }
  41. return plugins;
  42. }