Tree Shaking
了解如何通过 tree shaking 未使用的代码来减少 Sentry 打包大小。
Sentry SDK 以多种方式支持 tree shaking。为了充分利用现代打包工具(如 webpack 或 Rollup)的 tree shaking 功能,需要应用一些额外的配置。如果您希望最小化 Sentry SDK 的打包大小,我们建议阅读本页面并按照所示应用 tree shaking 配置。
Sentry SDK 包含了一些并非严格必需的代码,例如用于调试您的 Sentry 配置或启用跟踪的代码。虽然调试代码在开发环境中非常有用,但在生产环境中通常不需要包含这些代码,因为它们会占用宝贵的打包空间。JavaScript SDK 在其 CommonJS 和 ESM 发行版中包含了特殊的标志,可以在构建过程中帮助 tree shaking(移除)这类代码。
您没有导入和使用的任何代码将自动在使用现代打包工具(如 Webpack、Rollup、Vite 等)时被 tree shaken 掉。这意味着像 Replay、BrowserTracing、BrowserProfiling 等可选集成以及任何未使用的实用方法不会包含在您的打包中,除非您自己导入并使用了它们。本页面的其余部分涉及如何 tree shake 内部 SDK 代码,这些代码除非您使用某些特定功能,否则不是必需的。
此配置从打包工具插件 v2.9.0 版本开始可用。
如果您正在使用我们的某个打包工具插件,可以使用 bundleSizeOptimizations
配置选项来 tree shake 可选代码:
更多详情,请参阅您所使用的具体打包工具插件的文档:
如果您希望 tree shake 可选代码,可以通过替换 Sentry SDK 中的各种标志来从构建输出中移除这些代码。请注意,如果您已经通过 Sentry 打包工具插件配置了 tree shaking,则无需手动执行此操作——插件会为您处理。
以下标志可用:
__SENTRY_DEBUG__
将此标志替换为 false
将 tree shake 与调试日志相关的所有 SDK 代码。
__SENTRY_TRACING__
将此标志替换为 false
将 tree shake 与跟踪相关的所有 SDK 代码。
当您使用任何与跟踪相关的 SDK 功能(例如,Sentry.startTransaction()
)时,不要将 __SENTRY_TRACING__
替换为 false
。此标志旨在与像 @sentry/next
或 @sentry/sveltekit
这样的包结合使用,这些包会自动包含跟踪功能。
要在 webpack 打包中 tree shake Sentry 调试代码,我们建议使用 webpack 的 DefinePlugin:
如果您正在使用 rollup.js
,我们建议使用 Rollup 的 replace
插件: