index.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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 { 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, mode: 'development' | 'production') {
  14. const vitePlugins: VitePlugin[] = [];
  15. // vite-plugin-html
  16. setupHtmlPlugin(vitePlugins, viteEnv, mode);
  17. // vite-plugin-pwa
  18. setupPwaPlugin(vitePlugins, viteEnv, mode);
  19. // vite-plugin-mock
  20. setupMockPlugin(vitePlugins, viteEnv, mode);
  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 (isReportMode()) {
  29. // rollup-plugin-visualizer
  30. rollupPlugins.push(visualizer({ filename: './build/.cache/stats.html', open: true }) as Plugin);
  31. }
  32. if (isBuildGzip() || isSiteMode()) {
  33. // rollup-plugin-gizp
  34. rollupPlugins.push(gzipPlugin());
  35. }
  36. return rollupPlugins;
  37. }