From 9c28501e0d04a33438444d91930df411c57ca2d4 Mon Sep 17 00:00:00 2001 From: xh <11675084@qq.com> Date: Sat, 1 Nov 2025 13:03:31 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A6=BB=E7=BA=BF=E5=9B=BE=E6=A0=87=EF=BC=8C?= =?UTF-8?q?=E4=BD=86=E4=BC=9A=E5=A2=9E=E5=8A=A0=E4=BD=93=E7=A7=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/build/vite/index.ts | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/web/build/vite/index.ts b/web/build/vite/index.ts index e0bef7d..7245340 100644 --- a/web/build/vite/index.ts +++ b/web/build/vite/index.ts @@ -4,6 +4,8 @@ import VueJsx from '@vitejs/plugin-vue-jsx' import progress from 'vite-plugin-progress' import EslintPlugin from 'vite-plugin-eslint' import PurgeIcons from 'vite-plugin-purge-icons' +// import { visualizer } from 'rollup-plugin-visualizer' + import { ViteEjsPlugin } from 'vite-plugin-ejs' // @ts-ignore import ElementPlus from 'unplugin-element-plus/vite' @@ -14,8 +16,18 @@ import viteCompression from 'vite-plugin-compression' import topLevelAwait from 'vite-plugin-top-level-await' import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite' import { createSvgIconsPlugin } from 'vite-plugin-svg-icons-ng' + +import { IconJson } from '../../src/components/Icon/src/data.ts' + import UnoCSS from 'unocss/vite' +const preloadOfflineIcons = (iconData: Record): string[] => { + return Object.entries(iconData).reduce((a: string[], [k, v]) => { + a = a.concat(v.map((i) => k + i)) + return a + }, []) +} + export function createVitePlugins() { const root = process.cwd() @@ -29,7 +41,9 @@ export function createVitePlugins() { VueJsx(), UnoCSS(), progress(), - PurgeIcons(), + PurgeIcons({ + included: preloadOfflineIcons(IconJson) + }), ElementPlus({}), AutoImport({ include: [ @@ -64,7 +78,7 @@ export function createVitePlugins() { dts: 'src/types/auto-components.d.ts', // 自定义组件的解析器 resolvers: [ElementPlusResolver()], - globs: ["src/components/**/**.{vue, md}", '!src/components/DiyEditor/components/mobile/**'] + globs: ['src/components/**/**.{vue, md}', '!src/components/DiyEditor/components/mobile/**'] }), // EslintPlugin({ // cache: false, @@ -77,7 +91,7 @@ export function createVitePlugins() { }), createSvgIconsPlugin({ iconDirs: [pathResolve('src/assets/svgs')], - symbolId: 'icon-[dir]-[name]', + symbolId: 'icon-[dir]-[name]' }), // viteCompression({ // verbose: true, // 是否在控制台输出压缩结果 @@ -94,6 +108,13 @@ export function createVitePlugins() { promiseExportName: '__tla', // The function to generate import names of top-level await promise in each chunk module promiseImportName: (i) => `__tla_${i}` - }) + }), + // visualizer({ + // gzipSize: false, + // brotliSize: false, + // emitFile: false, + // filename: 'test.html', //分析图生成的文件名 + // open: true + // }) ] }