12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import { type PluginOption } from 'vite';
- import { configHtmlPlugin } from './html';
- import { configMockPlugin } from './mock';
- import { configCompressPlugin } from './compress';
- import { configVisualizerConfig } from './visualizer';
- import { configSvgIconsPlugin } from './svgSprite';
- import { createAppConfigPlugin } from './appConfig';
- import vue from '@vitejs/plugin-vue';
- import vueJsx from '@vitejs/plugin-vue-jsx';
- import purgeIcons from 'vite-plugin-purge-icons';
- interface Options {
- isBuild: boolean;
- root: string;
- compress: string;
- enableMock?: boolean;
- enableAnalyze?: boolean;
- }
- async function createPlugins({ isBuild, root, enableMock, compress, enableAnalyze }: Options) {
- const vitePlugins: (PluginOption | PluginOption[])[] = [vue(), vueJsx()];
- const appConfigPlugin = await createAppConfigPlugin({ root, isBuild });
- vitePlugins.push(appConfigPlugin);
- // vite-plugin-html
- vitePlugins.push(configHtmlPlugin({ isBuild }));
- // vite-plugin-svg-icons
- vitePlugins.push(configSvgIconsPlugin({ isBuild }));
- // vite-plugin-purge-icons
- vitePlugins.push(purgeIcons());
- // The following plugins only work in the production environment
- if (isBuild) {
- // rollup-plugin-gzip
- vitePlugins.push(
- configCompressPlugin({
- compress,
- }),
- );
- }
- // rollup-plugin-visualizer
- if (enableAnalyze) {
- vitePlugins.push(configVisualizerConfig());
- }
- // vite-plugin-mock
- if (enableMock) {
- vitePlugins.push(configMockPlugin({ isBuild }));
- }
- return vitePlugins;
- }
- export { createPlugins };
|