import type { AddressInfo } from 'net'; import type { Stats as WebpackStats, Compiler, StatsOptions, WebpackPluginInstance } from 'webpack'; export type StatsPreset = | boolean | 'errors-only' | 'errors-warnings' | 'minimal' | 'none' | 'normal' | 'verbose'; export type ToJsonOptionsObject = StatsOptions; export type ToJsonOptions = StatsPreset | ToJsonOptionsObject; export type StatsExcludeFilter = | string | string[] | RegExp | RegExp[] | ((assetName: string) => boolean) | Array<(assetName: string) => boolean>; export type ExcludeAssetsPatternFn = (assetName: string) => boolean; export type ExcludeAssetsPattern = string | RegExp | ExcludeAssetsPatternFn; export interface BundleAnalyzerOption { /** * 可以是 "server"、"static" 或 "disabled"。 * 默认为 "server"。 * 在 "server" 模式下,分析器将启动 HTTP 服务器以显示捆绑报告。 * 在 "static" 模式下,将生成包含捆绑报告的单个 HTML 文件。 * 在 "json" 模式下,将生成包含捆绑报告的单个 JSON 文件。 * 在 "disabled" 模式下,您可以设置 "generateStatsFile" 为 true,仅使用此插件生成 Webpack Stats JSON 文件。 */ analyzerMode?: 'server' | 'static' | 'json' | 'disabled' | undefined; /** * 在 `server` 模式下用于启动 HTTP 服务器的主机。 * @default '127.0.0.1' */ analyzerHost?: string | undefined; /** * 在 `server` 模式下用于启动 HTTP 服务器的端口。 * @default 8888 */ analyzerPort?: number | 'auto' | undefined; /** * 用于服务器模式下打印到控制台的 URL。 * @default 'https://${listenHost}:${boundAddress.port}' */ analyzerUrl?: (options: { listenPort: string; listenHost: string; boundAddress: AddressInfo; }) => string; /** * 在 "static" 模式下将生成的捆绑报告文件的路径。 * 相对于捆绑输出目录。 * @default 'report.html' */ reportFilename?: string | undefined; /** * HTML 标题元素的内容,或提供内容的形式为 () => string 的函数。 * @default 返回当前日期和时间的漂亮格式化函数。 */ reportTitle?: string | (() => string) | undefined; /** * 默认显示在报告中的模块大小。 * 应为 "stat"、"parsed" 或 "gzip" 之一。 * @default 'parsed' */ defaultSizes?: 'parsed' | 'stat' | 'gzip' | undefined; /** * 自动在默认浏览器中打开报告。 * @default true */ openAnalyzer?: boolean | undefined; /** * 如果为 true,则将生成 Webpack Stats JSON 文件在捆绑输出目录中。 * @default false */ generateStatsFile?: boolean | undefined; /** * 如果 generateStatsFile 为 true,则生成的 Webpack Stats JSON 文件的名称。 * 相对于捆绑输出目录。 * @default 'stats.json' */ statsFilename?: string | undefined; /** * stats.toJson() 方法的选项。 * 例如,您可以使用 "source: false" 选项从统计文件中排除模块的源代码。 * @default null */ statsOptions?: null | ToJsonOptions | undefined; /** * 用于匹配要从报告中排除的资产名称的模式。 * 如果模式是字符串,则将其转换为 RegExp 通过 `new RegExp(str)`。 * 如果模式是函数,则应具有以下签名 `(assetName: string) => boolean` 并应返回 true 以排除匹配的资产。 * 如果提供了多个模式,则资产应至少与其中一个匹配以被排除。 * @default null */ excludeAssets?: null | ExcludeAssetsPattern | ExcludeAssetsPattern[] | undefined; /** * 日志级别。可以是 "info"、"warn"、"error" 或 "silent"。 * @default 'info' */ logLevel?: 'info' | 'warn' | 'error' | 'silent' | undefined; }