42 行
1.6 KiB
Markdown
42 行
1.6 KiB
Markdown
# XuqmGroup RN SDK 架构
|
||
|
||
## 唯一基座
|
||
|
||
`@xuqm/rn-common` 是唯一可以独立使用的基础包,负责:
|
||
|
||
- 为官方扩展提供从 `src/assets/config/` 内唯一 `.xuqmconfig` 自动初始化的共享上下文;common 单独使用时不启动初始化;
|
||
- 维护唯一的 SDK 配置和用户会话;
|
||
- 网络、访问令牌、签名、文件、时间、加密、设备信息和通用 UI;
|
||
- 将一次 `XuqmSDK.login()` / `logout()` 传播给官方扩展包。
|
||
|
||
common 的文件、时间、网络、加密、设备、UI 和 hooks 不要求初始化或登录。配置与会话只在启用扩展包时形成统一 SDK 上下文。
|
||
|
||
`rn-update`、`rn-xwebview`、`rn-bugcollect`、`rn-im`、`rn-push` 都以 peer dependency 依赖同一个 common 实例。扩展包不得再实现独立初始化、独立 token 或独立用户状态。
|
||
|
||
## 生命周期
|
||
|
||
```text
|
||
配置文件 + withXuqmConfig
|
||
↓
|
||
common 自动初始化(同配置并发复用一个 Promise)
|
||
↓
|
||
宿主登录成功后调用一次 XuqmSDK.login
|
||
↓
|
||
common 串行更新 accessToken / userId
|
||
↓
|
||
已安装扩展包接收同一次会话通知
|
||
↓
|
||
宿主退出时调用一次 XuqmSDK.logout
|
||
```
|
||
|
||
内部订阅入口位于 `@xuqm/rn-common/internal`,仅供官方扩展包使用。应用代码只能使用 common 顶层公共 API。
|
||
|
||
## 发布与集成
|
||
|
||
包管理统一使用 pnpm 11。开发版本发布到 `https://nexus.xuqinmin.com/repository/npm-hosted/`;宿主从 npm group 仓库安装精确版本,禁止使用跨仓库 `file:` 依赖。
|
||
|
||
```bash
|
||
corepack pnpm validate
|
||
corepack pnpm --filter @xuqm/rn-common publish --tag next --no-git-checks
|
||
```
|