@seaverse/track-sdk 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,272 @@
1
+ # @seaverse/track-sdk
2
+
3
+ 统一埋点 SDK,采用 Token 化配置,所有平台配置已内置,使用更简单。
4
+
5
+ ## 特性
6
+
7
+ - 🎯 **Token 化配置**:只需提供 token,无需关心复杂配置
8
+ - 🔒 **代码混淆**:生产构建自动混淆,保护配置信息
9
+ - 🚀 **智能采集**:自动采集用户行为,同时支持手动埋点
10
+ - 🔌 **多平台支持**:同时支持多个数据分析平台
11
+ - 📦 **TypeScript 支持**:完整的类型定义
12
+ - 🎨 **按需加载**:动态导入,减少初始加载
13
+
14
+ ## 安装
15
+
16
+ ```bash
17
+ npm install @seaverse/track-sdk
18
+ ```
19
+
20
+ 安装 SDK 时会自动安装所需依赖。
21
+
22
+ ## 快速开始
23
+
24
+ ### 基本使用
25
+
26
+ ```typescript
27
+ import { TrackClient } from '@seaverse/track-sdk';
28
+
29
+ // 创建客户端(使用生产环境 token)
30
+ const trackClient = new TrackClient({
31
+ token: 'prod_2f8a9c1b4e3d',
32
+ });
33
+
34
+ // 初始化
35
+ await trackClient.initialize();
36
+
37
+ // 手动埋点
38
+ await trackClient.track('button_click', {
39
+ button_name: '购买按钮',
40
+ page: '商品详情',
41
+ });
42
+ ```
43
+
44
+ ## API 文档
45
+
46
+ ### TrackClient
47
+
48
+ #### 构造函数
49
+
50
+ ```typescript
51
+ new TrackClient(config: TrackConfig)
52
+ ```
53
+
54
+ **参数:**
55
+
56
+ ```typescript
57
+ interface TrackConfig {
58
+ token: string; // 应用令牌(必填)
59
+ debug?: boolean; // 是否开启调试模式,默认 false
60
+ }
61
+ ```
62
+
63
+ #### 方法
64
+
65
+ ##### `initialize(): Promise<void>`
66
+
67
+ 初始化 SDK,必须在使用前调用。
68
+
69
+ ```typescript
70
+ await trackClient.initialize();
71
+ ```
72
+
73
+ ##### `track(eventName: string, properties?: EventProperties): Promise<void>`
74
+
75
+ 跟踪事件。
76
+
77
+ ```typescript
78
+ await trackClient.track('purchase', {
79
+ product_id: '12345',
80
+ price: 99.99,
81
+ currency: 'CNY',
82
+ });
83
+ ```
84
+
85
+ ##### `setUserId(userId: string): Promise<void>`
86
+
87
+ 设置用户 ID(用户登录时调用)。
88
+
89
+ ```typescript
90
+ await trackClient.setUserId('user_123456');
91
+ ```
92
+
93
+ ##### `setUserProperties(properties: UserProperties): Promise<void>`
94
+
95
+ 设置用户属性。
96
+
97
+ ```typescript
98
+ await trackClient.setUserProperties({
99
+ age: 25,
100
+ gender: 'male',
101
+ vip_level: 'gold',
102
+ });
103
+ ```
104
+
105
+ ##### `clearUserId(): Promise<void>`
106
+
107
+ 清除用户 ID(用户登出时调用)。
108
+
109
+ ```typescript
110
+ await trackClient.clearUserId();
111
+ ```
112
+
113
+ ##### `getInitializedProviders(): TrackProvider[]`
114
+
115
+ 获取已初始化的提供商列表。
116
+
117
+ ```typescript
118
+ const providers = trackClient.getInitializedProviders();
119
+ console.log(providers); // 已初始化的埋点平台列表
120
+ ```
121
+
122
+ ## 使用示例
123
+
124
+ ### React 应用
125
+
126
+ ```typescript
127
+ import { useEffect } from 'react';
128
+ import { TrackClient } from '@seaverse/track-sdk';
129
+
130
+ // 创建全局实例
131
+ const trackClient = new TrackClient({
132
+ token: process.env.REACT_APP_TRACK_TOKEN || 'dev_9a3b6c2d1e4f',
133
+ debug: process.env.NODE_ENV === 'development',
134
+ });
135
+
136
+ function App() {
137
+ useEffect(() => {
138
+ // 初始化埋点
139
+ trackClient.initialize().then(() => {
140
+ console.log('Track SDK 已初始化');
141
+ });
142
+ }, []);
143
+
144
+ const handleLogin = async (userId: string) => {
145
+ await trackClient.setUserId(userId);
146
+ await trackClient.track('user_login');
147
+ };
148
+
149
+ const handlePurchase = async (productId: string, price: number) => {
150
+ await trackClient.track('purchase', {
151
+ product_id: productId,
152
+ price,
153
+ currency: 'CNY',
154
+ });
155
+ };
156
+
157
+ return <div>Your App</div>;
158
+ }
159
+
160
+ export default App;
161
+ ```
162
+
163
+ ### Vue 应用
164
+
165
+ ```typescript
166
+ // plugins/track.ts
167
+ import { TrackClient } from '@seaverse/track-sdk';
168
+
169
+ export const trackClient = new TrackClient({
170
+ token: import.meta.env.VITE_TRACK_TOKEN || 'dev_9a3b6c2d1e4f',
171
+ debug: import.meta.env.DEV,
172
+ });
173
+
174
+ // main.ts
175
+ import { createApp } from 'vue';
176
+ import App from './App.vue';
177
+ import { trackClient } from './plugins/track';
178
+
179
+ const app = createApp(App);
180
+
181
+ trackClient.initialize();
182
+
183
+ app.config.globalProperties.$track = trackClient;
184
+
185
+ app.mount('#app');
186
+ ```
187
+
188
+ ### 环境变量配置
189
+
190
+ **React (.env):**
191
+ ```bash
192
+ # 开发环境
193
+ REACT_APP_TRACK_TOKEN=dev_9a3b6c2d1e4f
194
+
195
+ # 测试环境
196
+ REACT_APP_TRACK_TOKEN=test_5d7e2a4b8f1c
197
+
198
+ # 生产环境
199
+ REACT_APP_TRACK_TOKEN=prod_2f8a9c1b4e3d
200
+ ```
201
+
202
+ **Vue (.env):**
203
+ ```bash
204
+ # 开发环境
205
+ VITE_TRACK_TOKEN=dev_9a3b6c2d1e4f
206
+
207
+ # 生产环境
208
+ VITE_TRACK_TOKEN=prod_2f8a9c1b4e3d
209
+ ```
210
+
211
+ ## 最佳实践
212
+
213
+ ### 1. 环境配置
214
+
215
+ 使用环境变量管理 token:
216
+
217
+ ```typescript
218
+ const trackClient = new TrackClient({
219
+ token: process.env.REACT_APP_TRACK_TOKEN || 'dev_9a3b6c2d1e4f',
220
+ debug: process.env.NODE_ENV !== 'production',
221
+ });
222
+ ```
223
+
224
+ ### 2. 用户生命周期
225
+
226
+ ```typescript
227
+ // 登录
228
+ async function onLogin(userId: string) {
229
+ await trackClient.setUserId(userId);
230
+ await trackClient.setUserProperties({
231
+ login_time: Date.now(),
232
+ });
233
+ await trackClient.track('user_login');
234
+ }
235
+
236
+ // 登出
237
+ async function onLogout() {
238
+ await trackClient.track('user_logout');
239
+ await trackClient.clearUserId();
240
+ }
241
+ ```
242
+
243
+ ### 3. 错误处理
244
+
245
+ ```typescript
246
+ try {
247
+ await trackClient.initialize();
248
+ } catch (error) {
249
+ console.error('埋点初始化失败:', error);
250
+ // 继续运行,不阻塞主流程
251
+ }
252
+ ```
253
+
254
+ ## 常见问题
255
+
256
+ **Q: 如何申请新的 token?**
257
+
258
+ 联系管理员添加新的配置到 `src/config.ts`。
259
+
260
+ **Q: 如何验证埋点是否正常工作?**
261
+
262
+ 开启 debug 模式:
263
+ ```typescript
264
+ const trackClient = new TrackClient({
265
+ token: 'your_token',
266
+ debug: true, // 会在控制台输出日志
267
+ });
268
+ ```
269
+
270
+ ## License
271
+
272
+ MIT