跳至主内容

如何贡献代码

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

感谢您对贡献 React Native 的兴趣!无论是评论和处理问题,还是审核代码和提交 PR,所有形式的贡献我们都欢迎。本文将详细介绍向 React Native 贡献代码的具体步骤。

如果您希望立即开始贡献代码,我们整理了Good first issues列表,其中包含范围相对有限的 bug 修复任务。 标有Help wanted标签的问题也非常适合提交 PR。

准备工作

信息

请根据您使用的开发平台和目标平台,参考环境设置指南配置所需工具和开发环境。

开发流程

克隆 React Native 仓库后,进入项目目录并运行 yarn 安装依赖。

现在您可以运行以下命令:

  • yarn start 启动 Metro 打包服务器

  • yarn lint 检查代码风格

  • yarn format 自动格式化代码

  • yarn test 运行基于 Jest 的 JavaScript 测试套件

    • yarn test --watch 启动交互式 JavaScript 测试监听器
    • yarn test <pattern> 运行匹配文件名的 JavaScript 测试
  • yarn flow 运行 Flow 类型检查

    • yarn flow-check-android*.android.js 文件进行完整 Flow 检查
    • yarn flow-check-ios*.ios.js 文件进行完整 Flow 检查
  • yarn test-typescript 运行 TypeScript 类型检查

  • yarn test-ios 运行 iOS 测试套件(需 macOS 系统)

  • yarn build 构建所有配置的包——通常只需在发布前由 CI 运行

  • yarn build-types 生成公共 API 的 TypeScript 类型定义并更新快照

测试您的更改

测试能帮助我们防止代码回退问题。建议在修改过程中运行 yarn test 或上述平台特定脚本,确保不会引入回退。

GitHub 仓库通过 CircleCI 进行持续测试,测试结果可通过提交记录和 PR 的 Checks 功能查看。

您可以在如何运行和编写测试页面了解更多信息。

代码风格

我们使用 Prettier 格式化 JavaScript 代码。您可以通过编辑器插件自动修复格式问题,或手动运行 yarn run prettier,这能节省您的时间和精力。我们还使用 linter 捕获代码中的风格问题,可通过 yarn run lint 检查代码风格状态。

但某些代码风格问题(特别是 Java 或 Objective-C 代码)linter 可能无法检测到。

Objective-C

  • @property 声明后保留空格

  • 所有 if 语句的括号需在同一行

  • - method@interface@implementation 的括号放在下一行

  • 尽量保持 80 字符行宽(有时无法实现...)

  • * 运算符与变量名相连(例如 NSObject *variableName;

Java

  • 若方法调用跨越多行,右括号与最后一个参数保持同行

  • 若方法声明超出一行,每个参数独占一行

  • 100 字符行宽限制

提交 Pull Request

对 React Native 的代码贡献通常以pull request形式提交。向 React Native 提案修改的流程可概括如下:

  1. Fork React Native 仓库并从 main 分支创建您的分支

  2. 若新增代码需要测试,请添加测试用例

  3. 若修改了 API,请更新相关文档

  4. 确保测试套件通过(可在本地或 PR 创建后通过 CI 验证)

  5. 确保代码通过 lint 检查(例如通过 yarn lint --fix

  6. 使用 yarn build-types --validate 验证是否修改了 JS 公共 API。若有修改,请运行 yarn build-types 重新生成快照

  7. 将修改推送到您的 fork 仓库

  8. 向 React Native 仓库创建 pull request

  9. 审核并处理 pull request 中的评论

  10. 机器人可能提供建议评论,通常需要先解决这些问题维护者才会审核代码

  11. 若尚未签署,请提交贡献者许可协议("CLA")

如一切顺利,您的 pull request 将被合并。若未被合并,维护者会尽力说明原因。

若是首次提交 pull request,我们准备了分步指南帮助您入门。更多关于 PR 处理的详细信息,请参阅管理 Pull Request页面。

贡献者许可协议

为接受您的 pull request,需要您签署贡献者许可协议(CLA)。您只需签署一次即可参与 Meta 任何开源项目。该过程仅需一分钟,可在安装依赖时完成。

许可协议

贡献 React Native 即表示您同意,您的贡献将遵循 React Native 仓库根目录中的LICENSE文件授权。