知海

Stats 配置

webpackjsorg-main配置参考

Stats 配置

object string

stats 选项可以让你精确控制要显示的 bundle 信息。如果你不想使用 quietnoInfo(因为你想要一些 bundle 信息,但不需要全部信息),这是一个很好的折中方案。

W> 使用 Node.js API 时,此选项不生效。你需要将 stats 选项传递给 stats.toString()stats.toJson() 调用。

js 复制代码
export default {
  // ...
  stats: "errors-only",
};

Stats 预设

webpack 提供了一些可用的 stats 输出预设:

预设 替代值 描述
'errors-only' 仅在发生错误时输出
'errors-warnings' 仅在发生错误和警告时输出
'minimal' 仅在发生错误或新的编译时输出
'none' false 不输出任何内容
'normal' true 标准输出
'verbose' 输出所有内容
'detailed' 输出除 chunkModuleschunkRootModules 外的所有内容
'summary' 输出 webpack 版本、警告数量和错误数量

Stats 选项

你可以指定要在 stats 输出中查看的信息。

T> stats 配置对象中的所有选项都是可选的。

stats.all

当某个选项未定义时,作为 stats 选项的回退值。它优先于本地 webpack 默认值。

js 复制代码
export default {
  // ...
  stats: {
    all: undefined,
  },
};

stats.assets

boolean = true

告诉 stats 是否显示资源信息。将 stats.assets 设置为 false 以隐藏它。

js 复制代码
export default {
  // ...
  stats: {
    assets: false,
  },
};

stats.assetsSort

string = 'id'

告诉 stats 按给定字段对资源进行排序。所有排序字段都可以用作 stats.assetsSort 的值。在值中使用 ! 前缀可按给定字段反转排序顺序。

js 复制代码
export default {
  // ...
  stats: {
    assetsSort: "!size",
  },
};

stats.assetsSpace

number = 15

告诉 stats 应显示多少项资源(分组将被折叠以适应此空间)。

js 复制代码
export default {
  // ...
  stats: {
    assetsSpace: 15,
  },
};

stats.builtAt

boolean = true

告诉 stats 是否添加构建日期和构建时间信息。将 stats.builtAt 设置为 false 以隐藏它。

js 复制代码
export default {
  // ...
  stats: {
    builtAt: false,
  },
};

stats.cached

stats.cachedModules 的旧版本。

stats.cachedAssets

boolean = true

告诉 stats 是否添加关于缓存资源的信息。将 stats.cachedAssets 设置为 false 将告诉 stats 只显示已输出的文件(而非已构建的文件)。

js 复制代码
export default {
  // ...
  stats: {
    cachedAssets: false,
  },
};

stats.cachedModules

boolean = true

告诉 stats 是否添加关于缓存(未构建)模块的信息。

js 复制代码
export default {
  // ...
  stats: {
    cachedModules: false,
  },
};

stats.children

boolean = true

告诉 stats 是否添加关于子编译的信息。

js 复制代码
export default {
  // ...
  stats: {
    children: false,
  },
};

stats.chunkGroupAuxiliary

boolean = true

显示 chunk 组中的辅助资源。

js 复制代码
export default {
  // ...
  stats: {
    chunkGroupAuxiliary: false,
  },
};

stats.chunkGroupChildren

boolean = true

显示 chunk 组的子项(例如预获取、预加载的 chunk 和资源)。

js 复制代码
export default {
  // ...
  stats: {
    chunkGroupChildren: false,
  },
};

stats.chunkGroupMaxAssets

number

chunk 组中显示的资源数量限制。

js 复制代码
export default {
  // ...
  stats: {
    chunkGroupMaxAssets: 5,
  },
};

stats.chunkGroups

boolean = true

告诉 stats 是否添加关于 namedChunkGroups 的信息。

js 复制代码
export default {
  // ...
  stats: {
    chunkGroups: false,
  },
};

stats.chunkModules

boolean = true

告诉 stats 是否在 chunk 信息中添加关于已构建模块的信息。

js 复制代码
export default {
  // ...
  stats: {
    chunkModules: false,
  },
};

stats.chunkModulesSpace

number = 10

告诉 stats 应显示多少项 chunk 模块(分组将被折叠以适应此空间)。

js 复制代码
export default {
  // ...
  stats: {
    chunkModulesSpace: 15,
  },
};

stats.chunkOrigins

boolean = true

告诉 stats 是否添加关于 chunk 来源和 chunk 合并的信息。

js 复制代码
export default {
  // ...
  stats: {
    chunkOrigins: false,
  },
};

stats.chunkRelations

boolean = false

告诉 stats 显示 chunk 的父级、子级和兄弟级。

js 复制代码
export default {
  // ...
  stats: {
    chunkRelations: false,
  },
};

stats.chunks

boolean = true

告诉 stats 是否添加关于 chunk 的信息。将 stats.chunks 设置为 false 将减少输出内容。

js 复制代码
export default {
  // ...
  stats: {
    chunks: false,
  },
};

stats.chunksSort

string = 'id'

告诉 stats 按给定字段对 chunk 进行排序。所有排序字段都可以用作 stats.chunksSort 的值。在值中使用 ! 前缀可按给定字段反转排序顺序。

js 复制代码
export default {
  // ...
  stats: {
    chunksSort: "name",
  },
};

stats.colors

boolean = false { bold?: string, cyan?: string, green?: string, magenta?: string, red?: string, yellow?: string }

告诉 stats 是否以不同颜色输出。

js 复制代码
export default {
  // ...
  stats: {
    colors: true,
  },
};

它也可以作为 CLI 标志使用:

bash 复制代码
npx webpack --stats-colors

要禁用它:

bash 复制代码
npx webpack --no-stats-colors

你可以使用 ANSI 转义序列 指定自己的终端输出颜色。

js 复制代码
export default {
  // ...
  colors: {
    green: "\u001B[32m",
  },
};

stats.context

string

stats 的基础目录,一个用于缩短请求信息的绝对路径

js 复制代码
import path from "node:path";
import { fileURLToPath } from "node:url";

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

export default {
  // ...
  stats: {
    context: path.resolve(__dirname, "src/components"),
  },
};

默认情况下,使用 context 的值或 Node.js 当前工作目录。

stats.dependentModules

boolean

告诉 stats 是否显示属于 chunk 中其他模块依赖项的 chunk 模块。

js 复制代码
export default {
  // ...
  stats: {
    dependentModules: false,
  },
};

stats.depth

boolean = false

告诉 stats 是否显示每个模块到入口点的距离。

js 复制代码
export default {
  // ...
  stats: {
    depth: true,
  },
};

stats.entrypoints

boolean = true "auto"

告诉 stats 是否显示入口点及其对应的 bundle。

js 复制代码
export default {
  // ...
  stats: {
    entrypoints: false,
  },
};

stats.entrypoints 设置为 'auto' 时,webpack 将自动决定是否在 stats 输出中显示入口点。

stats.env

boolean = false

告诉 stats 是否显示 --env 信息。

js 复制代码
export default {
  // ...
  stats: {
    env: true,
  },
};

stats.errorCause

boolean "auto"

告诉 stats 是否在输出中包含错误的 cause 属性。默认为 true

js 复制代码
export default {
  // ...
  stats: {
    errorCause: true,
  },
};

stats.errorDetails

boolean "auto"

告诉 stats 是否在错误中添加详细信息。默认为 'auto',即当错误不超过 2 个时显示错误详细信息。

js 复制代码
export default {
  // ...
  stats: {
    errorDetails: false,
  },
};

stats.errorErrors

boolean "auto"

告诉 stats 是否在输出中包含 AggregateError 实例中的 errors 数组。默认为 true

当单个错误由多个底层错误组成时,此选项非常有用,可以提供对分组错误结构的更深入可见性。

js 复制代码
export default {
  // ...
  stats: {
    errorErrors: true,
  },
};

stats.errorStack

boolean = true

告诉 stats 是否显示错误的堆栈跟踪。

js 复制代码
export default {
  // ...
  stats: {
    errorStack: false,
  },
};

stats.errors

boolean = true

告诉 stats 是否显示错误。

js 复制代码
export default {
  // ...
  stats: {
    errors: false,
  },
};

stats.errorsCount

boolean = true

添加错误数量。

js 复制代码
export default {
  // ...
  stats: {
    errorsCount: false,
  },
};

stats.errorsSpace

number

告诉 stats 限制用于显示单个错误所分配的行数。

js 复制代码
export default {
  // ...
  stats: {
    errorsSpace: 5,
  },
};

stats.exclude

参见 stats.excludeModules

stats.excludeAssets

array = []: string | RegExp | function (assetName) => boolean string RegExp function (assetName) => boolean

告诉 stats 排除匹配的资源信息。可以使用 stringRegExpfunction(以资源名称作为参数并返回 boolean)来实现。stats.excludeAssets 可以是上述任意类型的 array

js 复制代码
export default {
  // ...
  stats: {
    excludeAssets: [
      "filter",
      /filter/,
      (assetName) => assetName.contains("moduleA"),
    ],
  },
};

stats.excludeModules

array = []: string | RegExp | function (assetName) => boolean string RegExp function (assetName) => boolean boolean: false

告诉 stats 排除匹配的模块信息。可以使用 stringRegExpfunction(以模块的源代码作为参数并返回 boolean)来实现。stats.excludeModules 可以是上述任意类型的 arraystats.excludeModules 的配置会与 stats.exclude 的配置值合并

js 复制代码
export default {
  // ...
  stats: {
    excludeModules: ["filter", /filter/, (moduleSource) => true],
  },
};

stats.excludeModules 设置为 false 将禁用排除行为。

js 复制代码
export default {
  // ...
  stats: {
    excludeModules: false,
  },
};

stats.groupAssetsByChunk

boolean

告诉 stats 是否按资源与 chunk 的关联方式进行分组。

js 复制代码
export default {
  // ...
  stats: {
    groupAssetsByChunk: false,
  },
};

stats.groupAssetsByEmitStatus

boolean

告诉 stats 是否按资源的状态(已输出、为输出而比较或已缓存)进行分组。

js 复制代码
export default {
  // ...
  stats: {
    groupAssetsByEmitStatus: false,
  },
};

stats.groupAssetsByExtension

boolean

告诉 stats 是否按资源的扩展名进行分组。

js 复制代码
export default {
  // ...
  stats: {
    groupAssetsByExtension: false,
  },
};

stats.groupAssetsByInfo

boolean

告诉 stats 是否按资源的资源信息(immutable、development、hotModuleReplacement 等)进行分组。

js 复制代码
export default {
  // ...
  stats: {
    groupAssetsByInfo: false,
  },
};

stats.groupAssetsByPath

boolean

告诉 stats 是否按资源的资源路径进行分组。

js 复制代码
export default {
  // ...
  stats: {
    groupAssetsByPath: false,
  },
};

stats.groupModulesByAttributes

boolean

告诉 stats 是否按模块的属性(errors、warnings、assets、optional、orphan 或 dependent)进行分组。

js 复制代码
export default {
  // ...
  stats: {
    groupModulesByAttributes: false,
  },
};

stats.groupModulesByCacheStatus

boolean

告诉 stats 是否按模块的缓存状态(已缓存或已构建且可缓存)进行分组。

js 复制代码
export default {
  // ...
  stats: {
    groupModulesByCacheStatus: true,
  },
};

stats.groupModulesByExtension

boolean

告诉 stats 是否按模块的扩展名进行分组。

js 复制代码
export default {
  // ...
  stats: {
    groupModulesByExtension: true,
  },
};

stats.groupModulesByLayer

boolean

告诉 stats 是否按模块的层进行分组。

js 复制代码
export default {
  // ...
  stats: {
    groupModulesByLayer: true,
  },
};

stats.groupModulesByPath

boolean

告诉 stats 是否按模块的路径进行分组。

js 复制代码
export default {
  // ...
  stats: {
    groupModulesByPath: true,
  },
};

stats.groupModulesByType

boolean

告诉 stats 是否按模块的类型进行分组。

js 复制代码
export default {
  // ...
  stats: {
    groupModulesByType: true,
  },
};

stats.groupReasonsByOrigin

boolean

按来源模块对 reasons 进行分组,以避免大量的 reasons。

js 复制代码
export default {
  // ...
  stats: {
    groupReasonsByOrigin: true,
  },
};

stats.hash

boolean = true

告诉 stats 是否添加关于编译 hash 的信息。

js 复制代码
export default {
  // ...
  stats: {
    hash: false,
  },
};

stats.ids

boolean = false

告诉 stats 添加模块和 chunk 的 ID。

js 复制代码
export default {
  // ...
  stats: {
    ids: true,
  },
};

stats.logging

string = 'info': 'none' | 'error' | 'warn' | 'info' | 'log' | 'verbose' boolean

告诉 stats 是否添加日志输出。

  • 'none'false - 禁用日志
  • 'error' - 仅错误
  • 'warn' - 仅错误和警告
  • 'info' - 错误、警告和信息消息
  • 'log'true - 错误、警告、信息消息、日志消息、分组、清除。折叠的分组以折叠状态显示。
  • 'verbose' - 记录除 debug 和 trace 之外的所有内容。折叠的分组以展开状态显示。
js 复制代码
export default {
  // ...
  stats: {
    logging: "verbose",
  },
};

stats.loggingDebug

array = []: string | RegExp | function (name) => boolean string RegExp function (name) => boolean

告诉 stats 包含指定记录器(如插件或加载器)的调试信息。当 stats.logging 设置为 false 时,stats.loggingDebug 选项将被忽略。

js 复制代码
export default {
  // ...
  stats: {
    loggingDebug: [
      "MyPlugin",
      /MyPlugin/,
      /webpack/, // 获取核心日志
      (name) => name.contains("MyPlugin"),
    ],
  },
};

stats.loggingTrace

boolean = true

在日志输出中为错误、警告和跟踪启用堆栈跟踪。设置 stats.loggingTrace 以隐藏跟踪。

js 复制代码
export default {
  // ...
  stats: {
    loggingTrace: false,
  },
};

stats.moduleAssets

boolean = true

告诉 stats 是否添加模块内部资源的信息。将 stats.moduleAssets 设置为 false 以隐藏它。

js 复制代码
export default {
  // ...
  stats: {
    moduleAssets: false,
  },
};

stats.moduleTrace

boolean = true

告诉 stats 显示依赖关系以及警告/错误的来源。stats.moduleTrace 自 webpack 2.5.0 起可用。

js 复制代码
export default {
  // ...
  stats: {
    moduleTrace: false,
  },
};

stats.modules

boolean = true

告诉 stats 是否添加关于已构建模块的信息。

js 复制代码
export default {
  // ...
  stats: {
    modules: false,
  },
};

stats.modulesSort

string = 'id'

告诉 stats 按给定字段对模块进行排序。所有排序字段都可以用作 stats.modulesSort 的值。在值中使用 ! 前缀可按给定字段反转排序顺序。

js 复制代码
export default {
  // ...
  stats: {
    modulesSort: "size",
  },
};

stats.modulesSpace

number = 15

告诉 stats 应显示多少项模块(分组将被折叠以适应此空间)。

js 复制代码
export default {
  // ...
  stats: {
    modulesSpace: 15,
  },
};

stats.nestedModules

boolean

告诉 stats 是否添加关于嵌套在其他模块中的模块的信息(例如模块拼接)。

js 复制代码
export default {
  // ...
  stats: {
    nestedModules: true,
  },
};

stats.nestedModulesSpace

number = 10

告诉 stats 应显示多少项嵌套模块(分组将被折叠以适应此空间)。

js 复制代码
export default {
  // ...
  stats: {
    nestedModulesSpace: 15,
  },
};

stats.optimizationBailout

boolean

告诉 stats 显示模块的优化失败原因。

js 复制代码
export default {
  // ...
  stats: {
    optimizationBailout: false,
  },
};

stats.orphanModules

boolean = false

告诉 stats 是否隐藏 orphan 模块。如果模块未包含在任何 chunk 中,则它是 orphan 模块。默认情况下,stats 会隐藏 orphan 模块。

js 复制代码
export default {
  // ...
  stats: {
    orphanModules: true,
  },
};

stats.outputPath

boolean = true

告诉 stats 显示 outputPath

js 复制代码
export default {
  // ...
  stats: {
    outputPath: false,
  },
};

stats.performance

boolean = true

告诉 stats 在文件大小超过 performance.maxAssetSize 时显示性能提示。

js 复制代码
export default {
  // ...
  stats: {
    performance: false,
  },
};

stats.preset

string boolean: false

设置所显示信息类型的预设。它对于扩展 stats 行为非常有用。

js 复制代码
export default {
  // ...
  stats: {
    preset: "minimal",
  },
};

stats.preset 的值设置为 false 会告诉 webpack 使用 'none' stats 预设

stats.providedExports

boolean = false

告诉 stats 显示模块的导出。

js 复制代码
export default {
  // ...
  stats: {
    providedExports: true,
  },
};

stats.publicPath

boolean = true

告诉 stats 显示 publicPath

js 复制代码
export default {
  // ...
  stats: {
    publicPath: false,
  },
};

stats.reasons

boolean = true

告诉 stats 添加关于模块为何被包含的原因信息。

js 复制代码
export default {
  // ...
  stats: {
    reasons: false,
  },
};

stats.reasonsSpace

number

显示 reasons 的空间(分组将被折叠以适应此空间)。

js 复制代码
export default {
  // ...
  stats: {
    reasonsSpace: 1000,
  },
};

T> detailed 预设 默认将 modulesSpaceassetsSpacereasonsSpace 限制为 1000。

stats.relatedAssets

boolean = false

告诉 stats 是否添加关于与其他资源相关的资源的信息(如资源的 SourceMap)。

js 复制代码
export default {
  // ...
  stats: {
    relatedAssets: true,
  },
};

stats.runtimeModules

boolean = true

告诉 stats 是否添加关于运行时模块的信息。

js 复制代码
export default {
  // ...
  stats: {
    runtimeModules: false,
  },
};

stats.source

boolean = false

告诉 stats 添加模块的源代码。

js 复制代码
export default {
  // ...
  stats: {
    source: true,
  },
};

stats.timings

boolean = true

告诉 stats 添加时间信息。

js 复制代码
export default {
  // ...
  stats: {
    timings: false,
  },
};

stats.usedExports

boolean = false

告诉 stats 是否显示模块的哪些导出被使用。

js 复制代码
export default {
  // ...
  stats: {
    usedExports: true,
  },
};

stats.version

boolean = true

告诉 stats 添加关于所用 webpack 版本的信息。

js 复制代码
export default {
  // ...
  stats: {
    version: false,
  },
};

stats.warnings

boolean = true

告诉 stats 添加警告。

js 复制代码
export default {
  // ...
  stats: {
    warnings: false,
  },
};

stats.warningsCount

boolean = true

添加警告数量。

js 复制代码
export default {
  // ...
  stats: {
    warningsCount: false,
  },
};

stats.warningsFilter

array = []: string | RegExp | function (warning) => boolean string RegExp function (warning) => boolean

告诉 stats 排除匹配给定过滤器的警告。可以使用 stringRegExpfunction(以警告作为参数并返回 boolean)来实现。stats.warningsFilter 可以是上述任意类型的 array

js 复制代码
export default {
  // ...
  stats: {
    warningsFilter: ["filter", /filter/, (warning) => true],
  },
};

W> stats.warningsFilter 已弃用,推荐使用 ignoreWarnings

stats.warningsSpace

number

告诉 stats 限制用于显示单个警告所分配的行数。

js 复制代码
export default {
  // ...
  stats: {
    warningsSpace: 5,
  },
};

排序字段

对于 assetsSortchunksSortmodulesSort,有几个可用的字段可以对项目进行排序:

  • 'id' - 项目的 ID,
  • 'name' - 项目在导入时被分配的名称,
  • 'size' - 项目的大小(以字节为单位),
  • 'chunks' - 项目来自哪些 chunk(例如,如果一个 chunk 有多个子 chunk:子 chunk 将根据它们的主 chunk 进行分组),
  • 'errors' - 项目中的错误数量,
  • 'warnings' - 项目中的警告数量,
  • 'failed' - 项目是否编译失败,
  • 'cacheable' - 项目是否可缓存,
  • 'built' - 资源是否已构建,
  • 'prefetched' - 资源是否将被预取,
  • 'optional' - 资源是否可选。
  • 'identifier' - 项目的标识符。
  • 'index' - 项目的处理索引。
  • 'index2'
  • 'profile'
  • 'issuer' - 来源方的标识符。
  • 'issuerId' - 来源方的 ID。
  • 'issuerName' - 来源方的名称。
  • 'issuerPath' - 完整的来源方对象。实际不需要按此字段排序。

扩展 stats 行为

如果你想使用某个预设(例如 'minimal')但仍覆盖某些规则:指定所需的 stats.preset,然后添加自定义或额外的规则。

webpack.config.js

js 复制代码
export default {
  // ..
  stats: {
    preset: "minimal",
    moduleTrace: true,
    errorDetails: true,
  },
};

帮助我们改进文档

发现翻译问题或内容错误?请告诉我们。