跳至主要内容

如何贡献代码

感谢您对贡献 React Native 的兴趣!从评论和处理问题,到审查和发送 PR,所有贡献都受欢迎。在本文档中,我们将介绍向 React Native 贡献代码的步骤。

如果您渴望立即开始贡献代码,我们提供了一个 适合新手的问题 列表,其中包含范围相对较小的 bug。标有 需要帮助 的问题是提交 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 test 或上述特定于平台的脚本,以确保在处理更改时不会引入任何回归。

GitHub 仓库使用 CircleCI 进行 持续测试,其结果可通过 提交 和 Pull Request 上的“检查”功能获得。

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

代码风格

我们使用 Prettier 来格式化 JavaScript 代码。这为您节省了时间和精力,因为您可以让 Prettier 通过其编辑器集成自动修复任何格式问题,或者通过手动运行 yarn run prettier 来修复。我们还使用 linter 来捕获代码中可能存在的样式问题。您可以通过运行 yarn run lint 检查代码样式的状态。

但是,仍然有一些样式是 linter 无法捕获的,尤其是在 Java 或 Objective-C 代码中。

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. 确保测试套件通过,无论是在本地还是在打开 Pull Request 后在 CI 上通过。
  5. 确保您的代码符合 linter 规则(例如,通过 yarn lint --fix)。
  6. 将更改推送到您的 fork。
  7. 向 React Native 仓库创建 Pull Request。
  8. 审查并解决 Pull Request 上的评论。
  9. 机器人可能会评论并提出建议。通常,我们要求您先解决这些问题,然后维护人员才会审查您的代码。
  10. 如果您尚未提交,请提交 贡献者许可协议 (“CLA”)

如果一切顺利,您的 Pull Request 将会被合并。如果未合并,维护人员将尽最大努力解释其原因。

如果您是第一次发送 Pull Request,我们创建了一个 分步指南来帮助您入门。有关如何处理 Pull Request 的更多详细信息,请参阅 管理 Pull Request 页面

贡献者许可协议

为了接受您的 Pull Request,我们需要您提交 贡献者许可协议 (CLA)。您只需要执行一次此操作即可参与 Meta 的任何开源项目。这只需要一分钟,因此您可以在等待依赖项安装时执行此操作。

许可证

通过贡献 React Native,您同意您的贡献将根据 React Native 仓库根目录中的 LICENSE 文件进行许可。