tracing
用于记录 Rspack 编译的内部流程,既可用于性能分析,也可用于定位 Bug。
可以通过以下两种方式开启 tracing:
@rspack/cli
或 Rsbuild:通过设置 RSPACK_PROFILE
环境变量来开启@rspack/core
:可通过 rspack.experiments.globalTrace.register
和 rspack.experiments.globalTrace.cleanup
开启。可以查看我们如何在 @rspack/cli
中实现 RSPACK_PROFILE
获取更多信息。生成的 trace.json
文件可以在 ui.perfetto.dev 中查看和分析。
Rspack 支持 chrome
和 logger
两种 layer:
chrome
:默认值,生成符合 chrome trace event
格式的 trace.json 文件,可导出到 perfetto 进行复杂的性能分析logger
:直接在终端输出日志,适用于简单的日志分析或在 CI 环境中查看编译流程可以通过 RSPACK_TRACE_LAYER
环境变量指定 layer:
可以指定 trace 的输出位置:
logger
layer 的默认输出为 stdout
chrome
layer 的默认输出为 trace.json
通过 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 支持混合使用多种过滤条件,实现更复杂的过滤策略: