chore: remove vite-plugin-html

This commit is contained in:
xingyu4j
2026-04-10 22:00:33 +08:00
committed by allen
parent bd369df3bc
commit 093479bb33
6 changed files with 46 additions and 146 deletions

View File

@@ -55,7 +55,6 @@
"unplugin-dts": "catalog:",
"vite": "catalog:",
"vite-plugin-compression": "catalog:",
"vite-plugin-html": "catalog:",
"vite-plugin-lazy-import": "catalog:"
}
}

View File

@@ -0,0 +1,35 @@
import type { PluginOption } from 'vite';
import type { Options as HtmlMinifierOptions } from 'html-minifier-terser';
import { minify } from 'html-minifier-terser';
const HTML_MINIFY_OPTIONS = {
collapseWhitespace: true,
minifyCSS: true,
minifyJS: true,
removeComments: true,
removeRedundantAttributes: true,
removeScriptTypeAttributes: true,
removeStyleLinkTypeAttributes: true,
useShortDoctype: true,
} as const;
function viteHtmlPlugin(options: HtmlMinifierOptions = {}): PluginOption {
return {
name: 'vben-native-html',
transformIndexHtml: {
order: 'post',
async handler(html, ctx) {
if (!ctx.bundle) {
return html;
}
return await minify(html, {
...HTML_MINIFY_OPTIONS,
...options,
});
},
},
};
}
export { viteHtmlPlugin };

View File

@@ -14,12 +14,12 @@ import viteVueJsx from '@vitejs/plugin-vue-jsx';
import { visualizer as viteVisualizerPlugin } from 'rollup-plugin-visualizer';
import viteDtsPlugin from 'unplugin-dts/vite';
import viteCompressPlugin from 'vite-plugin-compression';
import { createHtmlPlugin as viteHtmlPlugin } from 'vite-plugin-html';
import { VitePWA } from 'vite-plugin-pwa';
import viteVueDevTools from 'vite-plugin-vue-devtools';
import { viteArchiverPlugin } from './archiver';
import { viteExtraAppConfigPlugin } from './extra-app-config';
import { viteHtmlPlugin } from './html';
import { viteImportMapPlugin } from './importmap';
import { viteInjectAppLoadingPlugin } from './inject-app-loading';
import { viteMetadataPlugin } from './inject-metadata';
@@ -199,7 +199,7 @@ async function loadApplicationPlugins(
},
{
condition: !!html,
plugins: () => [viteHtmlPlugin({ minify: true })],
plugins: () => [viteHtmlPlugin(typeof html === 'object' ? html : {})],
},
{
condition: isBuild && importmap,

View File

@@ -6,6 +6,7 @@ import type {
UserConfig,
UserConfigFnPromise,
} from 'vite';
import type { Options as HtmlMinifierOptions } from 'html-minifier-terser';
import type { Options as PwaPluginOptions } from 'vite-plugin-pwa';
/**
@@ -94,6 +95,12 @@ interface ArchiverPluginOptions {
outputDir?: string;
}
/**
* HTML 插件配置
* @description 用于配置基于 transformIndexHtml 的 HTML 压缩行为
*/
type HtmlPluginOptions = HtmlMinifierOptions;
/**
* ImportMap 插件配置
* @description 用于配置模块的 CDN 导入
@@ -217,7 +224,7 @@ interface ApplicationPluginOptions extends CommonPluginOptions {
* 是否开启 HTML 插件
* @default true
*/
html?: boolean;
html?: boolean | HtmlPluginOptions;
/**
* 是否开启国际化
* @default false
@@ -342,6 +349,7 @@ export type {
DefineApplicationOptions,
DefineConfig,
DefineLibraryOptions,
HtmlPluginOptions,
IImportMap,
ImportmapPluginOptions,
LibraryPluginOptions,