用途:把 React 应用接入 Dune 认证,使其能在 Fusion 内与 CDF 通信;适用于从现有 React 应用迁移到 Dune,或尚未接入 Dune 认证时。
流程选择:读取 app.json 的 infra 字段。为 "appsApi" 时走 Apps API(新 Fusion 应用宿主),认证来自 @cognite/app-sdk 的 connectToHostApp,需额外安装 @cognite/app-sdk;缺失或其他值时走经典流程(旧 Files API),使用 @cognite/dune 的 DuneAuthProvider + useDune()。没有 app.json 则询问用户,默认 Apps API(npx @cognite/dune create 的默认)。
主要能力:读取 package.json、src/main.tsx(或 src/index.tsx)、vite.config.ts、app.json,判断是否已有有效配置(经典 Provider 包裹、Apps API 生成器模式、或 AppSdkAuthProvider 包裹模式),已有则不动并报告 no-op;根据锁文件识别包管理器(pnpm-lock.yaml → pnpm,yarn.lock → yarn,否则 npm)。
依赖安装:两种流程都需运行时依赖 @cognite/dune、@cognite/sdk、@tanstack/react-query,以及开发依赖 vite-plugin-mkcert;仅 Apps API 额外需要 @cognite/app-sdk。已存在的不重复安装。
Vite 配置:需包含 base: "./"(Fusion iframe 部署必需)、mkcert()、fusionOpenPlugin()、server.port: 3001、worker.format: "es",只补缺失项,不删除既有插件。
入口接线:经典流程在入口文件用 DuneAuthProvider 包裹 App,组件内用 useDune() 取 sdk、isLoading、error;Apps API 默认在 App.tsx 内调用 connectToHostApp(异步握手,需渲染 loading 状态),applicationName 使用 app.json 的 appConfig.externalId;若项目已使用 AppSdkAuthProvider 包裹则保留(有效的替代写法)。
清理:移除被取代的自定义 CDF 认证 provider/hook、手动 CogniteClient 实例化、OIDC/token 代码及 CDF 环境变量(如 VITE_CDF_PROJECT、VITE_CDF_CLUSTER);不确定时保留并提示用户。
限制:资料未提供失败排查、版本要求、价格或其他异常处理细节。