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