Browse Source

离线图标,但会增加体积

master
xh 6 days ago
parent
commit
9c28501e0d
  1. 29
      web/build/vite/index.ts

29
web/build/vite/index.ts

@ -4,6 +4,8 @@ import VueJsx from '@vitejs/plugin-vue-jsx'
import progress from 'vite-plugin-progress' import progress from 'vite-plugin-progress'
import EslintPlugin from 'vite-plugin-eslint' import EslintPlugin from 'vite-plugin-eslint'
import PurgeIcons from 'vite-plugin-purge-icons' import PurgeIcons from 'vite-plugin-purge-icons'
// import { visualizer } from 'rollup-plugin-visualizer'
import { ViteEjsPlugin } from 'vite-plugin-ejs' import { ViteEjsPlugin } from 'vite-plugin-ejs'
// @ts-ignore // @ts-ignore
import ElementPlus from 'unplugin-element-plus/vite' 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 topLevelAwait from 'vite-plugin-top-level-await'
import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite' import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons-ng' import { createSvgIconsPlugin } from 'vite-plugin-svg-icons-ng'
import { IconJson } from '../../src/components/Icon/src/data.ts'
import UnoCSS from 'unocss/vite' import UnoCSS from 'unocss/vite'
const preloadOfflineIcons = (iconData: Record<string, string[]>): string[] => {
return Object.entries(iconData).reduce((a: string[], [k, v]) => {
a = a.concat(v.map((i) => k + i))
return a
}, [])
}
export function createVitePlugins() { export function createVitePlugins() {
const root = process.cwd() const root = process.cwd()
@ -29,7 +41,9 @@ export function createVitePlugins() {
VueJsx(), VueJsx(),
UnoCSS(), UnoCSS(),
progress(), progress(),
PurgeIcons(),
PurgeIcons({
included: preloadOfflineIcons(IconJson)
}),
ElementPlus({}), ElementPlus({}),
AutoImport({ AutoImport({
include: [ include: [
@ -64,7 +78,7 @@ export function createVitePlugins() {
dts: 'src/types/auto-components.d.ts', dts: 'src/types/auto-components.d.ts',
// 自定义组件的解析器 // 自定义组件的解析器
resolvers: [ElementPlusResolver()], resolvers: [ElementPlusResolver()],
globs: ["src/components/**/**.{vue, md}", '!src/components/DiyEditor/components/mobile/**']
globs: ['src/components/**/**.{vue, md}', '!src/components/DiyEditor/components/mobile/**']
}), }),
// EslintPlugin({ // EslintPlugin({
// cache: false, // cache: false,
@ -77,7 +91,7 @@ export function createVitePlugins() {
}), }),
createSvgIconsPlugin({ createSvgIconsPlugin({
iconDirs: [pathResolve('src/assets/svgs')], iconDirs: [pathResolve('src/assets/svgs')],
symbolId: 'icon-[dir]-[name]',
symbolId: 'icon-[dir]-[name]'
}), }),
// viteCompression({ // viteCompression({
// verbose: true, // 是否在控制台输出压缩结果 // verbose: true, // 是否在控制台输出压缩结果
@ -94,6 +108,13 @@ export function createVitePlugins() {
promiseExportName: '__tla', promiseExportName: '__tla',
// The function to generate import names of top-level await promise in each chunk module // The function to generate import names of top-level await promise in each chunk module
promiseImportName: (i) => `__tla_${i}` promiseImportName: (i) => `__tla_${i}`
})
}),
// visualizer({
// gzipSize: false,
// brotliSize: false,
// emitFile: false,
// filename: 'test.html', //分析图生成的文件名
// open: true
// })
] ]
} }

Loading…
Cancel
Save