跳到主要内容

如何贡献代码

感谢您有兴趣为 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 进行持续测试,其结果可通过提交和拉取请求上的检查功能获得。

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

编码风格

我们使用 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 个字符的行长

发送拉取请求

对 React Native 的代码级别贡献通常以拉取请求的形式进行。向 React Native 提出更改的过程可以总结如下

  1. Fork React Native 仓库并从main分支创建您的分支。
  2. 如果您添加了需要测试的代码,请添加测试。
  3. 如果您更改了 API,请更新文档。
  4. 确保测试套件通过,无论是在本地还是在您打开拉取请求后在 CI 上。
  5. 确保您的代码通过 lint 检查(例如通过yarn lint --fix)。
  6. 使用yarn build-types --validate验证您的代码是否修改了 JS 公共 API。如果是,请使用yarn build-types重新生成快照。
  7. 将更改推送到您的 fork。
  8. 向 React Native 仓库创建拉取请求。
  9. 审查并解决您拉取请求上的评论。
  10. 机器人可能会提出建议。通常我们要求您先解决这些问题,然后维护者才会审查您的代码。
  11. 如果您还没有,请提交贡献者许可协议(“CLA”)

如果一切顺利,您的拉取请求将被合并。如果未合并,维护者将尽力解释其原因。

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

贡献者许可协议

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

许可

通过为 React Native 贡献代码,您同意您的贡献将根据 React Native 仓库根目录中的LICENSE文件获得许可。