index.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import type { Plugin as VitePlugin } from 'vite';
  2. import type { Plugin as rollupPlugin } from 'rollup';
  3. import PurgeIcons from 'vite-plugin-purge-icons';
  4. import visualizer from 'rollup-plugin-visualizer';
  5. import gzipPlugin from './gzip/index';
  6. // @ts-ignore
  7. import pkg from '../../../package.json';
  8. import { isProdFn, isSiteMode, ViteEnv, isReportMode, isBuildGzip } from '../../utils';
  9. import { setupHtmlPlugin } from './html';
  10. import { setupPwaPlugin } from './pwa';
  11. import { setupMockPlugin } from './mock';
  12. // gen vite plugins
  13. export function createVitePlugins(viteEnv: ViteEnv) {
  14. const vitePlugins: VitePlugin[] = [];
  15. // vite-plugin-html
  16. setupHtmlPlugin(vitePlugins, viteEnv);
  17. // vite-plugin-pwa
  18. setupPwaPlugin(vitePlugins, viteEnv);
  19. // vite-plugin-mock
  20. setupMockPlugin(vitePlugins, viteEnv);
  21. // vite-plugin-purge-icons
  22. vitePlugins.push(PurgeIcons());
  23. return vitePlugins;
  24. }
  25. // gen rollup plugins
  26. export function createRollupPlugin() {
  27. const rollupPlugins: rollupPlugin[] = [];
  28. if (!isProdFn() && isReportMode()) {
  29. // rollup-plugin-visualizer
  30. rollupPlugins.push(visualizer({ filename: './build/.cache/stats.html', open: true }) as Plugin);
  31. }
  32. if (!isProdFn() && (isBuildGzip() || isSiteMode())) {
  33. // rollup-plugin-gizp
  34. rollupPlugins.push(gzipPlugin());
  35. }
  36. return rollupPlugins;
  37. }