SuperAPI AI 工具集

vendor-otel

通用与其它

查看项目

更新于 10-16 08:47

技能介绍

用途:把某个 @opentelemetry/instrumentation-* npm 包内联(vendor)进 Sentry JavaScript SDK,即把上游 TypeScript 源码复制到 vendored/ 目录、移除对应 npm 依赖,并保证构建与测试通过。适用于需要对 Sentry SDK 中 OTel 检测包做内联、复制或改写的场景。

主要流程:

  1. 调研:用 gh api 列出上游源码文件、检查锁定版本与最新 tag、查看 CHANGELOG 与全部源码 diff,检查外部类型导入、集成/E2E/单测覆盖情况,并把发现报告给用户。
  2. 计划:给出待 vendor 版本、需拷贝文件、需内联类型、测试覆盖与风险,等待用户明确批准后再实施。
  3. 目录结构:如 packages/node/src/integrations/tracing/<name>.ts 改为 <name>/index.ts,创建 vendored/ 子目录。
  4. 拷贝源码:从 OTel contrib GitHub 仓库获取 TypeScript 原文(非 node_modules 编译产物),保留 Apache 2.0 许可头并加 Sentry NOTICE(含来源链接、上游版本),追加 /* eslint-disable */;在主文件中用 SDK_VERSION 替换 PACKAGE_VERSION,改为 @sentry/instrumentation-<name>。
  5. 外部类型:一律内联外部包类型(含被检测包自身类型),可放入单独的 <package>-types.ts,只保留被访问成员,尽量贴近原类型;构建后检查 .d.ts 无类型泄漏。
  6. 按仓库严格 TS 配置(strict、noUncheckedIndexedAccess)修复编译错误,并在头部注明微调。
  7. 调整 package.json 依赖与 lint 例外配置。
  8. 构建与测试:yarn install、yarn fix、yarn build:dev:filter @sentry/<package>,运行集成测试与单元测试,并把单测导入改为 vendored 路径(含 vi.mock)。
  9. 提交前向用户报告全部改动,确认后再创建草稿 PR(分支 vendor-<name>-instrumentation,提交信息 ref(node): Vendor <name> instrumentation,基分支 develop)。

限制:首次 vendor 的 PR 不允许改动逻辑,内联代码行为须与原始一致;后续 PR 才可重构或替换上游工具。npm 包具体名称、版本号与命令中的占位符需按实际替换,资料未提供具体价格、平台等其它信息。