跳至主要内容
版本: 6.x

React Navigation 贡献者指南

想要帮助改进 React Navigation 吗?您的帮助将不胜感激!

以下是参与项目的一些方式

以下是一些有助于您入门的资源

贡献

报告错误

编写代码时难免会遇到一些错误。尤其是在 React Navigation 快速发展的情况下,错误是不可避免的。如果你认为你发现了错误,请按照以下步骤操作。

  1. 搜索已有的问题,看看是否有与你遇到的问题类似的。如果找到类似的问题,请添加 👍 表情(请勿使用 +1 评论)。阅读评论,看看你是否能为该主题提供更多有价值的信息。
  2. 如果没有任何类似的问题,请创建一个新的问题。请务必遵循 问题模板

创建高质量的复现步骤至关重要。没有它,我们可能无法修复错误,而且在理想情况下,你可能会发现这并不是库本身的错误,而仅仅是你的项目中操作不当。立即修复错误!

改进文档

任何成功的项目都需要高质量的文档,React Navigation 也不例外。

react-navigation/react-navigation.github.io 仓库 中了解更多关于文档的信息。

回复问题

为 React Navigation 做贡献的另一个好方法是回复问题。也许是回答别人的问题,指出他们代码中的一个小错误,或者帮助他们整理复现步骤。如果你有兴趣在 React Navigation 中扮演更积极的角色,从回复问题开始 - 这不仅有帮助,而且还能展示你对代码的承诺和了解!

错误修复

找到错误,修复它,你将一整天都走好运!正如前面提到的,错误是不可避免的。如果你发现错误,请执行以下操作。

  1. 检查是否已经存在解决该错误的拉取请求。如果有,请对其进行审查并留下你的评论。
  2. 如果没有现有的拉取请求,请找出解决方案!如果修改相对较小,请直接修复并提交拉取请求。如果修改比较多,请先创建一个问题,以便我们进行讨论(请参阅 大型拉取请求 部分)。
  3. 如果存在与该错误相关的 issue,请在该 issue 上留下评论,链接到你的拉取请求,以便其他人知道该问题已得到解决。

查看 需要帮助适合新手 标签,看看你可以从哪里开始帮助我们!

建议功能

你想要在 React Navigation 中看到什么功能?请 在 Canny 上创建功能请求

大型 Pull Requests

对于任何将添加/删除/修改项目中多个文件的更改(新功能或错误修复),请先不要编写代码。这样做有几个原因。

  1. 大型 Pull Requests 需要大量时间来审查,有时很难理解上下文。
  2. 通常你可能不需要进行你预期的那样大的更改。

考虑到这一点,以下是一些建议。

  1. 打开一个 issue 并明确定义你想要完成的目标以及你打算如何完成。
  2. 与社区和维护者讨论该解决方案。提供上下文,确定边缘情况,并确定设计。
  3. 确定行动计划。
  4. 编写代码并提交 PR。
  5. 审查 PR。这可能需要一些时间,但如果你遵循了上述步骤,希望不会花费太多时间。

我们希望这样做是为了节省每个人的时间。也许该功能已经存在,但没有文档?或者也许它不适合该库。无论如何,通过提前讨论重大更改,你既节省了自己的时间,也节省了其他人的时间。

信息

Issue 模板

在提交 issue 之前,请查看 issue 模板 并遵循它。这样做是为了帮助每个人更好地理解你遇到的问题,并减少来回沟通以获取必要信息。

是的,完成 issue 模板需要时间和精力。但这确实是提出高质量问题并获得回复的唯一方法。

您是愿意花 1 分钟时间创建一份不完整的 Issue 报告,然后等上几个月才能得到任何回复?还是愿意花 20 分钟时间填写一份高质量的 Issue 报告,包含所有必要元素,并在几天内得到回复?这对于任何愿意花时间审查您的 Issue 的人来说也是一种尊重之举。

Pull Request 模板

与 Issue 模板类似,Pull Request 模板 提供了说明,以确保您的 Pull Request 能及时得到审查,并减少来回沟通。在开始编写任何代码之前,请务必仔细阅读。

Fork 代码库

  • 在 GitHub 上 Fork repo
  • 在终端中运行以下命令,将其下载到本地并安装
git clone https://github.com/<USERNAME>/navigation-ex.git
cd navigation-ex
git remote add upstream https://github.com/react-navigation/react-navigation.git
yarn

该项目使用 yarn workspaceslerna 管理的 Monorepo 结构。所有包都在 packages/ 目录下。

代码审查指南

四处看看。与代码库的其余部分保持一致的风格。该项目使用 ESLint 来确保整个项目的代码风格一致。您可以通过运行以下命令来检查您的项目

yarn lint

如果出现任何错误,您要么必须手动修复它们,要么可以尝试通过运行以下命令自动修复它们

yarn lint --fix

代码库是用 TypeScript 编写的,必须通过类型检查。要对文件进行类型检查,请运行

yarn typescript

在开发项目时,在监视模式下运行类型检查非常有用。要执行此操作,请运行

yarn typescript --watch

运行示例应用程序

示例应用程序 包含各种模式,并用作贡献者手动集成测试更改的简单方法。

在开发过程中,您可以使用 示例应用程序Expo 来测试您的更改。

yarn example start

运行测试

React Navigation 在 Jest 中实现了测试。要运行其中任何一个,从 React Navigation 目录中,运行以下命令中的任何一个(在安装 node_modules 后)以运行测试或类型检查。

yarn test

在处理项目时,以监视模式运行测试非常有用。要执行此操作,请运行

yarn test --watch

这些命令将由我们的 CI 运行,并且在合并任何贡献之前必须通过。