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

Tracing layer
Rspack 支持 perfetto 和 logger 两种 layer:
logger:默认值,将 JSON Lines 格式的日志写入文件,适用于简单的日志分析。在 CI 环境中,可以上传或打印生成的rspack.log,也可以显式设置RSPACK_TRACE_OUTPUT=stdout/stderr将 logger 输出流式写到终端。perfetto:仅在使用@rspack-debug/core时可用,生成符合perfetto proto格式的rspack.pftrace文件,可导入到 Perfetto 进行复杂的性能分析
@rspack-debug/core 是 @rspack/core 的诊断版本,包含额外的调试和 tracing 能力,例如 perfetto layer。当你需要为本地问题排查收集 Perfetto trace 时使用它,不建议把它作为常规构建的默认依赖。
可以通过 RSPACK_TRACE_LAYER 环境变量指定 layer:
Tracing output
可以指定 trace 的输出位置:
loggerlayer 的默认输出为.rspack-profile-${timestamp}-${pid}/rspack.logperfettolayer 的默认输出为.rspack-profile-${timestamp}-${pid}/rspack.pftrace
通过 RSPACK_TRACE_OUTPUT 环境变量可以自定义输出位置:
当 RSPACK_TRACE_OUTPUT 是相对文件路径时,它会解析到生成的 .rspack-profile-${timestamp}-${pid} 目录下。绝对路径会按原样使用。对于 logger layer,如果需要输出到终端,可以显式设置为 stdout 或 stderr。perfetto layer 始终需要文件路径。
Tracing filter
通过 RSPACK_PROFILE 可以配置需要过滤的数据。Rspack 提供了两个预设的 preset:
RSPACK_PROFILE=OVERVIEW:默认值,只展示核心的构建流程,生成的 JSON 文件较小RSPACK_PROFILE=ALL:包含所有的 trace event,用于较为复杂的分析,生成的 JSON 文件较大
除了预设外,其他字符串都会透传给 Env Filter,支持更复杂的过滤策略:
Tracing level filter
支持的 tracing 等级有:TRACE、DEBUG、INFO、WARN 和 ERROR。可以通过等级进行过滤:
模块级别过滤
混合过滤
EnvFilter 支持混合使用多种过滤条件,实现更复杂的过滤策略:

