Fuel TypeScript SDK 开发指南:从环境搭建到贡献规范
项目概述
Fuel TypeScript SDK(简称fuels-ts)是为Fuel区块链生态系统提供的一套TypeScript开发工具包。它为开发者提供了与Fuel区块链交互所需的各种功能模块,包括钱包管理、合约交互、ABI编解码等核心组件。
开发环境配置
基础环境搭建
要开始开发fuels-ts项目,首先需要配置本地开发环境:
- 克隆项目仓库到本地
- 使用pnpm安装所有依赖项
- 构建项目
pnpm install
pnpm build
开发模式
项目支持实时编译的watch模式,可以大大提高开发效率:
pnpm dev
这个命令会监控所有包的源代码变化并自动重新构建。底层使用了nodemon来实现高效的文件监控,配置参数可以在nodemon.config.json
中查看。
本地包链接
在开发过程中,你可能需要在本地测试项目中验证fuels-ts的修改效果。这时可以使用pnpm的链接功能:
- 首先将fuels包链接到全局存储
- 然后在测试项目中链接这个全局包
# 在fuels-ts/packages/fuels目录下
pnpm link --global
# 在测试项目目录下
pnpm link --global fuels
这种链接方式同样适用于其他子包,如@fuel-ts/wallet等。
核心开发工作流
测试策略
fuels-ts项目采用了全面的测试策略:
-
单元测试:运行所有单元测试
pnpm test
-
浏览器环境测试:验证在浏览器中的兼容性
pnpm test:browser
-
针对性测试:可以针对特定包或文件运行测试
pnpm test:filter packages/wallet
-
端到端测试:项目包含完整的e2e测试脚本,模拟真实网络环境下的交互
性能基准测试
项目使用Vitest的benchmark功能进行性能测试:
pnpm bench:node
基准测试结果可以帮助开发者识别性能瓶颈,确保SDK的高效运行。
高级开发场景
使用未发布的Forc和Fuel-Core
在开发新功能时,可能需要使用Forc或Fuel-Core的未发布版本:
- 修改
internal/forc/VERSION
或internal/fuel-core/VERSION
文件 - 将版本号替换为git分支名(如
git:some/branch-name
) - 重新安装并构建
pnpm install
pnpm build
这会在internal/forc/sway-repo
和internal/fuel-core/fuel-core-repo
目录下克隆指定分支的代码。
网络测试与性能分析
项目提供了专门的网络测试套件和交易性能分析工具:
-
网络测试:验证SDK与不同网络的兼容性
pnpm test:network
-
交易性能分析:测量不同类型交易的执行时间
pnpm tx:perf -- --execution-count 10
这些工具会生成详细的测试报告,帮助开发者优化网络交互性能。
代码提交规范
fuels-ts项目遵循严格的提交信息规范,采用category(scope): message
格式:
feat
: 新增功能fix
: bug修复docs
: 文档变更build
: 构建系统变更test
: 测试相关变更ci
: CI配置变更chore
: 其他杂项变更
示例:
feat(wallet): add support for multi-sig wallets
版本管理与发布
补丁发布流程
对于已发布版本的补丁更新:
- 基于发布标签创建发布分支
- 合并修复问题的PR到发布分支
- 自动生成变更集并创建版本
版本更新策略
-
Forc更新:使用专用脚本更新Forc版本
pnpm forc:update
-
Fuel-Core更新:手动编辑VERSION文件后重新构建
开发最佳实践
- 预提交检查:项目配置了pre-push git钩子,会在推送前自动运行代码检查
- 变更集管理:使用
pnpm changeset
命令记录变更,用于生成更新日志 - 兼容性考虑:目前项目尚未发布主版本,API兼容的变更应使用
patch
版本号
常见问题解答
Q: 为什么项目前缀是fuels
而不是fuel
?
A: 这是为了向区块链生态的ethers.js项目致敬,同时保持命名一致性,让来自区块链生态的开发者感到熟悉。
通过本文介绍的工作流程和规范,开发者可以高效地参与到fuels-ts项目的开发中,为Fuel生态系统的TypeScript工具链贡献力量。无论是修复bug、添加新功能,还是优化性能,遵循这些规范都能确保贡献的质量和一致性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考