跳至主要内容

安装

安装 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仅 WebWeb 组件(连接按钮、支付组件、NFT 画廊)
react-native>=0.72.0仅 RNAI 交易和外汇 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/servicesOneEngineClientPriceServiceSupabaseServiceUsageServiceforexSimulationEnginebotSimulationEngine
@one_deploy/sdk/types所有 TypeScript 接口和类型别名
@one_deploy/sdk/utils辅助函数(格式化、验证、链工具)
@one_deploy/sdk/config默认配置常量、链定义、合约地址
@one_deploy/sdk/providersOneProviderOneThirdwebProvider
@one_deploy/sdk/hooks所有 27+ 个 hooks(useOneuseOneAuthuseWalletBalanceuseAIStrategies 等)
@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 同时提供 ESMCommonJS 构建。现代打包工具(Vite、Next.js、esbuild、webpack 5)在你使用上述特定入口点时,会自动 tree-shake 未使用的代码。

要获得最佳打包体积:

  1. 从子路径导入,而不是使用 barrel 导入 @one_deploy/sdk
  2. 使用 import type 导入仅在编译时需要的内容。
  3. 避免在 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);

下一步