跳至主内容

如何贡献代码

非官方测试版翻译

本页面由 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文件授权。