Kirk Lin
2023-10-08 a712a8e5a088da59b32343eb23819ea9040830ef
提交 | 用户 | age
5e9946 1 import vue from '@vitejs/plugin-vue';
V 2 import vueJsx from '@vitejs/plugin-vue-jsx';
6890dd 3 import { type PluginOption } from 'vite';
V 4 import purgeIcons from 'vite-plugin-purge-icons';
5
a712a8 6 import { createConfigPluginConfig } from './appConfig';
6890dd 7 import { configCompressPlugin } from './compress';
V 8 import { configHtmlPlugin } from './html';
9 import { configMockPlugin } from './mock';
10 import { configSvgIconsPlugin } from './svgSprite';
11 import { configVisualizerConfig } from './visualizer';
c659c1 12
5e9946 13 interface Options {
V 14   isBuild: boolean;
15   root: string;
16   compress: string;
17   enableMock?: boolean;
18   enableAnalyze?: boolean;
19 }
20
a712a8 21 async function createPlugins({ isBuild, enableMock, compress, enableAnalyze }: Options) {
1262e1 22   const vitePlugins: (PluginOption | PluginOption[])[] = [vue(), vueJsx()];
5e9946 23
a712a8 24   const appConfigPlugin = await createConfigPluginConfig(isBuild);
5e9946 25   vitePlugins.push(appConfigPlugin);
V 26
27   // vite-plugin-html
28   vitePlugins.push(configHtmlPlugin({ isBuild }));
29
30   // vite-plugin-svg-icons
31   vitePlugins.push(configSvgIconsPlugin({ isBuild }));
32
33   // vite-plugin-purge-icons
34   vitePlugins.push(purgeIcons());
35
36   // The following plugins only work in the production environment
37   if (isBuild) {
38     // rollup-plugin-gzip
39     vitePlugins.push(
40       configCompressPlugin({
41         compress,
42       }),
43     );
44   }
45
46   // rollup-plugin-visualizer
47   if (enableAnalyze) {
48     vitePlugins.push(configVisualizerConfig());
49   }
50
51   // vite-plugin-mock
52   if (enableMock) {
53     vitePlugins.push(configMockPlugin({ isBuild }));
54   }
55
56   return vitePlugins;
57 }
58
59 export { createPlugins };