Vben
2021-02-25 8a9ca498d70a0a4f66c073fe869fc6d8a3e79a55
提交 | 用户 | 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';
173d40 19
85729f 20 export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) {
993538 21   const { VITE_USE_IMAGEMIN, VITE_USE_MOCK, VITE_LEGACY, VITE_BUILD_COMPRESS } = viteEnv;
759e53 22
07c18d 23   const vitePlugins: (Plugin | Plugin[])[] = [
V 24     // have to
25     vue(),
26     // have to
27     vueJsx(),
28   ];
29
30   // @vitejs/plugin-legacy
31   VITE_LEGACY && isBuild && vitePlugins.push(legacy());
173d40 32
V 33   // vite-plugin-html
99ac30 34   vitePlugins.push(configHtmlPlugin(viteEnv, isBuild));
V 35
da0491 36   // vite-plugin-windicss
V 37   vitePlugins.push(configWindiCssPlugin());
38
ed41e5 39   // vite-plugin-mock
759e53 40   VITE_USE_MOCK && vitePlugins.push(configMockPlugin(isBuild));
173d40 41
V 42   // vite-plugin-purge-icons
43   vitePlugins.push(PurgeIcons());
44
c2f654 45   // vite-plugin-style-import
3d1681 46   vitePlugins.push(configStyleImportPlugin());
c2f654 47
99ac30 48   // rollup-plugin-visualizer
43503d 49   vitePlugins.push(configVisualizerConfig());
ed41e5 50
3d1681 51   //vite-plugin-theme
V 52   vitePlugins.push(configThemePlugin());
53
07c18d 54   // The following plugins only work in the production environment
de332a 55   if (isBuild) {
V 56     //vite-plugin-imagemin
759e53 57     VITE_USE_IMAGEMIN && vitePlugins.push(configImageminPlugin());
de332a 58
V 59     // rollup-plugin-gzip
993538 60     vitePlugins.push(configCompressPlugin(VITE_BUILD_COMPRESS));
de332a 61
V 62     // vite-plugin-pwa
63     vitePlugins.push(configPwaConfig(viteEnv));
64   }
65
99ac30 66   return vitePlugins;
173d40 67 }