vben
2021-08-25 99daecdb60ce4035119d84b2841a5802656a74fe
提交 | 用户 | age
99ac30 1 import type { Plugin } from 'vite';
07c18d 2 import vue from '@vitejs/plugin-vue';
V 3 import vueJsx from '@vitejs/plugin-vue-jsx';
4 import legacy from '@vitejs/plugin-legacy';
8a3f47 5 import purgeIcons from 'vite-plugin-purge-icons';
5e17cc 6 import windiCSS from 'vite-plugin-windicss';
99ac30 7 import { configHtmlPlugin } from './html';
V 8 import { configPwaConfig } from './pwa';
9 import { configMockPlugin } from './mock';
993538 10 import { configCompressPlugin } from './compress';
3d1681 11 import { configStyleImportPlugin } from './styleImport';
43503d 12 import { configVisualizerConfig } from './visualizer';
3d1681 13 import { configThemePlugin } from './theme';
de332a 14 import { configImageminPlugin } from './imagemin';
9c2a2a 15 import { configSvgIconsPlugin } from './svgSprite';
38f507 16 import { configHmrPlugin } from './hmr';
173d40 17
85729f 18 export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) {
f7499c 19   const {
20     VITE_USE_IMAGEMIN,
21     VITE_USE_MOCK,
22     VITE_LEGACY,
23     VITE_BUILD_COMPRESS,
24     VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE,
25   } = viteEnv;
759e53 26
07c18d 27   const vitePlugins: (Plugin | Plugin[])[] = [
V 28     // have to
29     vue(),
30     // have to
31     vueJsx(),
32   ];
33
5e17cc 34   // vite-plugin-windicss
V 35   vitePlugins.push(windiCSS());
36
e12c58 37   // TODO
38f507 38   !isBuild && vitePlugins.push(configHmrPlugin());
e12c58 39
07c18d 40   // @vitejs/plugin-legacy
884515 41   VITE_LEGACY && isBuild && vitePlugins.push(legacy());
173d40 42
V 43   // vite-plugin-html
99ac30 44   vitePlugins.push(configHtmlPlugin(viteEnv, isBuild));
V 45
9c2a2a 46   // vite-plugin-svg-icons
V 47   vitePlugins.push(configSvgIconsPlugin(isBuild));
da0491 48
ed41e5 49   // vite-plugin-mock
759e53 50   VITE_USE_MOCK && vitePlugins.push(configMockPlugin(isBuild));
173d40 51
V 52   // vite-plugin-purge-icons
8a3f47 53   vitePlugins.push(purgeIcons());
173d40 54
c2f654 55   // vite-plugin-style-import
a9462f 56   vitePlugins.push(configStyleImportPlugin(isBuild));
c2f654 57
99ac30 58   // rollup-plugin-visualizer
43503d 59   vitePlugins.push(configVisualizerConfig());
ed41e5 60
3d1681 61   //vite-plugin-theme
5b8eb4 62   vitePlugins.push(configThemePlugin(isBuild));
3d1681 63
07c18d 64   // The following plugins only work in the production environment
de332a 65   if (isBuild) {
V 66     //vite-plugin-imagemin
759e53 67     VITE_USE_IMAGEMIN && vitePlugins.push(configImageminPlugin());
de332a 68
V 69     // rollup-plugin-gzip
f7499c 70     vitePlugins.push(
56a966 71       configCompressPlugin(VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE),
f7499c 72     );
de332a 73
V 74     // vite-plugin-pwa
75     vitePlugins.push(configPwaConfig(viteEnv));
76   }
77
99ac30 78   return vitePlugins;
173d40 79 }