tracing 用于记录 Rspack 内部的编译流程,既可用于性能分析,也可用于定位 Bug。
可以通过以下两种方式开启 tracing:
RSPACK_PROFILE 环境变量来开启:@rspack/core:可通过 rspack.experiments.globalTrace.register 和 rspack.experiments.globalTrace.cleanup 开启。你可以查看我们如何在 @rspack/cli 中实现 RSPACK_PROFILE获取更多信息。生成的 rspack.pftrace 文件可以在 ui.perfetto.dev 中查看和分析:

Rspack 支持 perfetto 和 logger 两种 layer:
perfetto:默认值,生成符合 perfetto proto 格式的 rspack.pftrace 文件,可导出到 perfetto 进行复杂的性能分析logger:直接在终端输出日志,适用于简单的日志分析或在 CI 环境中查看编译流程可以通过 RSPACK_TRACE_LAYER 环境变量指定 layer:
可以指定 trace 的输出位置:
logger layer 的默认输出为 stdoutperfetto layer 的默认输出为 rspack.pftrace通过 RSPACK_TRACE_OUTPUT 环境变量可以自定义输出位置:
通过 RSPACK_PROFILE 可以配置需要过滤的数据。Rspack 提供了两个预设的 preset:
RSPACK_PROFILE=OVERVIEW:默认值,只展示核心的构建流程,生成的 JSON 文件较小RSPACK_PROFILE=ALL:包含所有的 trace event,用于较为复杂的分析,生成的 JSON 文件较大除了预设外,其他字符串都会透传给 Env Filter,支持更复杂的过滤策略:
支持的 tracing 等级有:TRACE、DEBUG、INFO、WARN 和 ERROR。可以通过等级进行过滤:
EnvFilter 支持混合使用多种过滤条件,实现更复杂的过滤策略: