index.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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 unplugin from './unplugin';
  8. import mock from './mock';
  9. import visualizer from './visualizer';
  10. import compress from './compress';
  11. import pwa from './pwa';
  12. /**
  13. * vite插件
  14. * @param viteEnv - 环境变量配置
  15. */
  16. export function setupVitePlugins(viteEnv: ImportMetaEnv): (PluginOption | PluginOption[])[] {
  17. const plugins = [
  18. vue({
  19. script: {
  20. defineModel: true
  21. }
  22. }),
  23. vueJsx(),
  24. ...unplugin(viteEnv),
  25. unocss(),
  26. mock(viteEnv),
  27. progress(),
  28. pageRoute()
  29. ];
  30. if (viteEnv.VITE_VISUALIZER === 'Y') {
  31. plugins.push(visualizer as PluginOption);
  32. }
  33. if (viteEnv.VITE_COMPRESS === 'Y') {
  34. plugins.push(compress(viteEnv));
  35. }
  36. if (viteEnv.VITE_PWA === 'Y' || viteEnv.VITE_VERCEL === 'Y') {
  37. plugins.push(pwa());
  38. }
  39. return plugins;
  40. }