index.ts 1.2 KB
Newer Older
V
vben 已提交
1
import type { Plugin } from 'vite';
2 3 4 5 6

import PurgeIcons from 'vite-plugin-purge-icons';

import visualizer from 'rollup-plugin-visualizer';

V
vben 已提交
7 8
// @ts-ignore
import pkg from '../../../package.json';
V
vben 已提交
9 10 11 12 13 14
import { ViteEnv, isReportMode } from '../../utils';
import { configHtmlPlugin } from './html';
import { configPwaConfig } from './pwa';
import { configMockPlugin } from './mock';
import { configDynamicImport } from './importContext';
import { configGzipPlugin } from './gzip';
15 16

// gen vite plugins
V
vben 已提交
17 18
export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean, mode: string) {
  const vitePlugins: (Plugin | Plugin[])[] = [];
19 20

  // vite-plugin-html
V
vben 已提交
21 22
  vitePlugins.push(configHtmlPlugin(viteEnv, isBuild));

V
vben 已提交
23
  // vite-plugin-pwa
V
vben 已提交
24 25
  vitePlugins.push(configPwaConfig(viteEnv, isBuild));

V
vben 已提交
26
  // vite-plugin-mock
V
vben 已提交
27 28 29 30
  vitePlugins.push(configMockPlugin(viteEnv, isBuild));

  // vite-plugin-import-context
  vitePlugins.push(configDynamicImport(viteEnv));
31 32 33 34

  // vite-plugin-purge-icons
  vitePlugins.push(PurgeIcons());

V
vben 已提交
35 36
  // rollup-plugin-gzip
  vitePlugins.push(configGzipPlugin(isBuild));
37

V
vben 已提交
38
  // rollup-plugin-visualizer
39
  if (isReportMode()) {
V
vben 已提交
40
    vitePlugins.push(visualizer({ filename: './build/.cache/stats.html', open: true }) as Plugin);
V
vben 已提交
41 42
  }

V
vben 已提交
43
  return vitePlugins;
44
}