From 4d7001bbcf3ff6e62deb967cb1c15b443b8aaff4 Mon Sep 17 00:00:00 2001 From: vben <anncwb@126.com> Date: 星期三, 17 二月 2021 22:07:22 +0800 Subject: [PATCH] refactor(design): add windicss --- build/vite/plugin/index.ts | 84 +++++++++++++++++++++++++---------------- 1 files changed, 51 insertions(+), 33 deletions(-) diff --git a/build/vite/plugin/index.ts b/build/vite/plugin/index.ts index 5db946a..9c1bd96 100644 --- a/build/vite/plugin/index.ts +++ b/build/vite/plugin/index.ts @@ -1,47 +1,65 @@ -import type { Plugin as VitePlugin } from 'vite'; -import type { Plugin as rollupPlugin } from 'rollup'; +import type { Plugin } from 'vite'; +import vue from '@vitejs/plugin-vue'; +import vueJsx from '@vitejs/plugin-vue-jsx'; +import legacy from '@vitejs/plugin-legacy'; + +import windiCSS from 'vite-plugin-windicss'; import PurgeIcons from 'vite-plugin-purge-icons'; -import visualizer from 'rollup-plugin-visualizer'; -import gzipPlugin from './gzip/index'; +import { ViteEnv } from '../../utils'; +import { configHtmlPlugin } from './html'; +import { configPwaConfig } from './pwa'; +import { configMockPlugin } from './mock'; +import { configCompressPlugin } from './compress'; +import { configStyleImportPlugin } from './styleImport'; +import { configVisualizerConfig } from './visualizer'; +import { configThemePlugin } from './theme'; +import { configImageminPlugin } from './imagemin'; -// @ts-ignore -import pkg from '../../../package.json'; -import { isSiteMode, ViteEnv, isReportMode, isBuildGzip } from '../../utils'; -import { setupHtmlPlugin } from './html'; -import { setupPwaPlugin } from './pwa'; -import { setupMockPlugin } from './mock'; +export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) { + const { VITE_USE_IMAGEMIN, VITE_USE_MOCK, VITE_LEGACY, VITE_BUILD_COMPRESS } = viteEnv; -// gen vite plugins -export function createVitePlugins(viteEnv: ViteEnv, mode: 'development' | 'production') { - const vitePlugins: VitePlugin[] = []; + const vitePlugins: (Plugin | Plugin[])[] = [ + // have to + vue(), + // have to + vueJsx(), + ...windiCSS(), + ]; + + // @vitejs/plugin-legacy + VITE_LEGACY && isBuild && vitePlugins.push(legacy()); // vite-plugin-html - setupHtmlPlugin(vitePlugins, viteEnv, mode); - // vite-plugin-pwa - setupPwaPlugin(vitePlugins, viteEnv, mode); + vitePlugins.push(configHtmlPlugin(viteEnv, isBuild)); + // vite-plugin-mock - setupMockPlugin(vitePlugins, viteEnv, mode); + VITE_USE_MOCK && vitePlugins.push(configMockPlugin(isBuild)); // vite-plugin-purge-icons vitePlugins.push(PurgeIcons()); + // vite-plugin-style-import + vitePlugins.push(configStyleImportPlugin()); + + // rollup-plugin-visualizer + vitePlugins.push(configVisualizerConfig()); + + //vite-plugin-theme + vitePlugins.push(configThemePlugin()); + + // The following plugins only work in the production environment + if (isBuild) { + //vite-plugin-imagemin + VITE_USE_IMAGEMIN && vitePlugins.push(configImageminPlugin()); + + // rollup-plugin-gzip + vitePlugins.push(configCompressPlugin(VITE_BUILD_COMPRESS)); + + // vite-plugin-pwa + vitePlugins.push(configPwaConfig(viteEnv)); + } + return vitePlugins; -} - -// gen rollup plugins -export function createRollupPlugin() { - const rollupPlugins: rollupPlugin[] = []; - - if (isReportMode()) { - // rollup-plugin-visualizer - rollupPlugins.push(visualizer({ filename: './build/.cache/stats.html', open: true }) as Plugin); - } - if (isBuildGzip() || isSiteMode()) { - // rollup-plugin-gizp - rollupPlugins.push(gzipPlugin()); - } - - return rollupPlugins; } -- Gitblit v1.8.0