gaoluyang
2026-06-24 c0cb161bb52ce0fbdce5c66ec391d107c75e2452
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import type { Options as HtmlMinifierOptions } from 'html-minifier-terser';
import type { PluginOption } from 'vite';
 
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 };