用途:说明如何让 TanStack Devtools 只出现在开发环境、或有意保留到生产环境,并避免其代码进入生产包。
主要能力:Vite 项目由 @tanstack/devtools-vite 的子插件 @tanstack/devtools:remove-devtools-on-build 在构建时用 oxc-parser 做 AST 剥离,默认 removeDevtoolsOnBuild 为 true,会移除各框架 devtools 包的导入及其 JSX 元素。核心包 @tanstack/devtools 通过 package.json 条件导出区分 browser.development(dev.js)、browser(index.js)与 node/workerd(server.js)。
使用方式:开发专用流程安装为 devDependencies,例如 npm install -D @tanstack/react-devtools @tanstack/devtools-vite,Vite 配置使用 devtools() 即可,应用代码无需守卫。若要有意在生产保留,需同时改为普通依赖 npm install @tanstack/react-devtools @tanstack/devtools-vite,并设置 devtools({ removeDevtoolsOnBuild: false }),可配合 requireUrlFlag 与 urlFlag 控制显示。非 Vite 项目需手动处理,如按 process.env.NODE_ENV 条件动态导入独立文件,或用打包器可静态求值的条件做死代码消除。插件库作者可用 @tanstack/devtools-utils 的工厂返回 [Plugin, NoOpPlugin],生产端选用 NoOp 变体以便 tree-shaking。
适用场景:Vite 与非 Vite 前端项目、可复用 devtools 插件包。
限制:两条流程在依赖类型与配置上互斥,混用可能导致生产环境裁剪 devDependencies 后构建静默失败;非 Vite 项目不会自动剥离。具体 API 与源码细节以官方资料为准。