Apollo Link Sentry 项目教程
1. 项目的目录结构及介绍
apollo-link-sentry/
├── src/
│ ├── breadcrumb.ts
│ ├── index.ts
│ ├── options.ts
│ └── types.ts
├── package.json
├── README.md
└── tsconfig.json
目录结构介绍
- src/: 项目的主要源代码目录。
- breadcrumb.ts: 处理与 Sentry 面包屑相关的逻辑。
- index.ts: 项目的入口文件,负责初始化和配置 Apollo Link Sentry。
- options.ts: 定义项目的配置选项,包括如何处理操作、是否包含缓存等。
- types.ts: 定义项目中使用的 TypeScript 类型。
- package.json: 项目的依赖管理文件,包含项目的依赖包和脚本命令。
- README.md: 项目的说明文档,包含项目的概述、安装和使用说明。
- tsconfig.json: TypeScript 的配置文件,定义 TypeScript 编译选项。
2. 项目的启动文件介绍
src/index.ts
index.ts
是 Apollo Link Sentry 项目的入口文件,负责初始化和配置 Apollo Link Sentry。以下是该文件的主要功能:
- 导入依赖: 导入 Apollo Client 和 Sentry 相关的依赖。
- 初始化 Apollo Link: 创建并配置 Apollo Link Sentry,使其能够与 Apollo Client 集成。
- 导出模块: 导出配置好的 Apollo Link Sentry,供其他模块使用。
import { ApolloLink } from '@apollo/client/core';
import { SentryLink } from './options';
export const sentryLink = new SentryLink();
export default sentryLink;
3. 项目的配置文件介绍
src/options.ts
options.ts
文件定义了 Apollo Link Sentry 的配置选项,允许用户自定义如何处理 GraphQL 操作、是否包含缓存等。以下是该文件的主要配置项:
- shouldHandleOperation: 决定是否处理给定的操作。如果未定义,则所有操作都将被处理。
- includeCache: 是否包含 Apollo Client 缓存的内容。主要用于调试目的,不建议在生产环境中使用。
- includeContext: 是否包含
ApolloContext
中的任意数据。接受以点分隔的键列表,例如foo.bar
。 - beforeBreadcrumb: 在发送面包屑之前返回修改后的面包屑副本。可用于从操作中添加额外数据或清理包含的数据。
- uri: GraphQL 端点的 URI,用于添加上下文信息。
- setTransaction: 是否将 Sentry 事务名称设置为 GraphQL 操作名称。
- setFingerprint: 是否通过附加 GraphQL 操作名称来缩小 Sentry 的指纹。
- attachBreadcrumbs: 是否为执行的 GraphQL 操作附加面包屑。
export interface FullOptions {
shouldHandleOperation?: (operation: Operation) => boolean;
includeCache?: boolean;
includeContext?: false | NonEmptyArray<string>;
beforeBreadcrumb?: (breadcrumb: Breadcrumb) => Breadcrumb;
uri?: string;
setTransaction?: boolean;
setFingerprint?: boolean;
attachBreadcrumbs?: Partial<AttachBreadcrumbsOptions> | false;
}
通过这些配置选项,用户可以根据自己的需求定制 Apollo Link Sentry 的行为,以更好地集成到他们的应用中。