开发指南
Node.js 18+, pnpm 9+
1. fork 仓库
打开 alova 仓库 fork 页,点击“Create fork”fork 仓库,并将已 fork 的仓库克隆到本地。
2. 克隆项目到本地
使用git clone
命令,或Github Desktop
应用克隆项目。
3. 新建 pull request
你可以在编写完代码后通过 fork 仓库创建 pull request,也可以分为任意多次提交代码,而无需一次提交完整代码。
4. 在本地编码
安装依赖
使用pnpm install
安装依赖。
安装推荐插件(vscode)
如果你使用 vscode,将会推荐你安装以下插件:
- eslint:检查代码质量
- prettier:格式化代码
- jest:自动执行单元测试用例,以及执行单个合集或单元测试用例
- EditorConfig:保证文件格式一致
项目结构
alova 是一个 monorepo 项目,结构如下:
|-.github
| |-ISSUE_TEMPLATE -> github issues模板
| |-workflows -> github action
| |-DISCUSSION_TEMPLATE -> github discussion模板
| |-pull_request_template -> github pull request模板
|-.changeset -> changeset配置
|-.husky -> husky配置
|-.vscode -> vscode配置
|-examples -> alova示例项目
|-internal -> 测试用例的公共模块
|-packages -> 项目源代码
|-scripts -> alova-scripts 脚本
|-其他配置文件
编码规范
代码格式
请安装推荐的插件,在每次保存文件时,prettier
和eslint
会自动格式化代码,因此你可以不必在意格式的问题。
尽量复用代码
在packages/shared
中定义了公共的变量和方法,请先浏览它们,并尽量复用它们。
Typescript
-
编写 typescript 类型时,请尽量编写合适的类型,并缩小类型范围。
-
packages/alova
和packages/client
包的类型是手动编写的,当修改它们时,请确保packages/alova
和packages/client
的typings
也同步更新。
5. 单元测试指南
编写完代码后,添加对应的单元测试用例,尽量包含边缘情况的测试。
alova 项目使用 jest 作为单元测试框架,使用 msw 作为模拟服务器。建议使用 TDD 模式。每次修改代码后,运行对应的单元测试并通过它。
当你创建 pull request 提交代码时,请确保通过了全部单元测试,如果发现问题也 可以再次提交,GitHub action 会再次自动运行。
添加测试用例
每个包的单元测试用例存放在packages/[packageName]/test
文件夹下,请找到对应的测试用例文件添加你的测试用例,如果没有合适的测试合集可自行创建;
运行和调试单个测试用例或合集
建议使用jest插件(上面推荐的插件之一)对单个用例或合集进行测试,你可以在测试用例中右键点击运行指定的用例,选择Run Test
运行此测试用例,选择Debug Test
断点调试此测试用例,如图:
运行全部测试用例
- 使用jest插件运行,如下图:
- 也可以通过命令行
pnpm run test
运行单元测试。