安装
安装 SDK
选择你的包管理器:
npm install @one_deploy/sdk@1.1.0
yarn
yarn add @one_deploy/sdk@1.1.0
pnpm
pnpm add @one_deploy/sdk@1.1.0
对等依赖
SDK 有少量对等依赖。只有 react 是严格必需的;其他依赖是可选的,取决于你使用的功能。
| 包 | 版本 | 是否必需? | 何时需要 |
|---|---|---|---|
react | >=18.0.0 | 是 | 始终需要(hooks、providers、组件) |
react-dom | >=18.0.0 | 仅 Web | Web 组件(连接按钮、支付组件、NFT 画廊) |
react-native | >=0.72.0 | 仅 RN | AI 交易和外汇 React Native 组件 |
thirdweb | >=5.0.0 | 可选 | 通过 OneThirdwebProvider 进行智能钱包连接、链上读写 |
安装你需要的可选对等依赖:
Web 应用(含钱包功能)
npm install react react-dom thirdweb
React Native(仅 AI 交易 / 外汇)
npm install react react-native
服务端 / Node(无界面模式)
npm install react
# react is still needed because hooks are typed against it,
# but no DOM or RN runtime is required.
包导出映射
@one_deploy/sdk 使用 package.json 中的 exports 字段暴露 8 个入口点。每个入口点都可以独立进行 tree-shaking。
| 导入路径 | 包含内容 |
|---|---|
@one_deploy/sdk | 重新导出所有内容(barrel)。适合原型开发;生产环境建议使用特定路径。 |
@one_deploy/sdk/services | OneEngineClient、PriceService、SupabaseService、UsageService、forexSimulationEngine、botSimulationEngine |
@one_deploy/sdk/types | 所有 TypeScript 接口和类型别名 |
@one_deploy/sdk/utils | 辅助函数(格式化、验证、链工具) |
@one_deploy/sdk/config | 默认配置常量、链定义、合约地址 |
@one_deploy/sdk/providers | OneProvider、OneThirdwebProvider |
@one_deploy/sdk/hooks | 所有 27+ 个 hooks(useOne、useOneAuth、useWalletBalance、useAIStrategies 等) |
@one_deploy/sdk/components | 仅 Web 组件(连接按钮、支付组件、入金、出金、兑换、NFT 画廊、余额显示) |
@one_deploy/sdk/react-native | 仅 React Native 组件(AI 交易选择器、外汇卡片) |
示例 -- 精确导入
// Only pulls in the engine client, nothing else
import { OneEngineClient } from "@one_deploy/sdk/services";
// Only pulls in the swap hook
import { useOneSwap } from "@one_deploy/sdk/hooks";
// Only pulls in TypeScript types (zero runtime cost)
import type { OneConfig, SwapQuote } from "@one_deploy/sdk/types";
Tree-Shaking
SDK 同时提供 ESM 和 CommonJS 构建。现代打包工具(Vite、Next.js、esbuild、webpack 5)在你使用上述特定入口点时,会自动 tree-shake 未使用的代码。
要获得最佳打包体积:
- 从子路径导入,而不是使用 barrel 导入
@one_deploy/sdk。 - 使用
import type导入仅在编译时需要的内容。 - 避免在 Web 构建中导入
@one_deploy/sdk/react-native(反之亦然)-- 如果平台特定代码泄漏到其他目标,你的打包工具会发出警告。
打包体积影响(近似值)
| 导入内容 | Gzip 后大小 |
|---|---|
仅 OneEngineClient | ~8 kB |
| 所有 hooks | ~12 kB |
| Web providers + hooks + 组件 | ~34 kB |
| 完整 barrel 导入 | ~52 kB |
TypeScript
SDK 为每个导出提供一流的 TypeScript 类型声明。无需安装 @types/* 包。最低 TypeScript 版本:5.0。
tsconfig.json (relevant fields)
{
"compilerOptions": {
"moduleResolution": "bundler", // or "node16" / "nodenext"
"target": "ES2020",
"strict": true
}
}
如果你使用 moduleResolution: "node"(旧版),子路径导出仍然可以解析,但推荐使用 "bundler" 或 "node16"。
验证安装
smoke-test.ts
import { OneEngineClient } from "@one_deploy/sdk/services";
import type { OneConfig } from "@one_deploy/sdk/types";
const config: OneConfig = {
clientId: process.env.ONE_CLIENT_ID!,
engineUrl: process.env.ONE_ENGINE_URL!,
};
const engine = new OneEngineClient({
baseUrl: config.engineUrl,
clientId: config.clientId,
});
console.log("ONE SDK installed. Engine target:", config.engineUrl);
下一步
- Provider 设置 (Web) -- 使用
OneProvider包裹你的 React DOM 应用。 - React Native 设置 -- 配置 RN 专用入口点。