React Navigation 贡献指南
想要帮助改进 React Navigation 吗?您的帮助将不胜感激!
以下是一些为项目做贡献的方式
以下是一些有用的资源,可帮助您入门
贡献
报告错误
你无法在不编写偶尔的错误的情况下编写代码。特别是当 React Navigation 快速发展时,错误会发生。当您认为自己发现了一个错误时,请执行以下操作
- 搜索现有问题,查找与您看到的问题类似的问题。如果您看到一个,请添加一个 👍 反应(请不要 +1 评论)。通读评论,看看您是否可以为该线程提供更多有价值的信息
- 如果没有其他与您的问题类似的问题,请创建一个新的问题。请务必遵循问题模板。
创建一个高质量的复现至关重要。没有它,我们可能无法修复错误,并且在理想情况下,您会发现这实际上不是库的错误,而只是在您的项目中错误地完成。即时错误修复!
改进文档
任何成功的项目都需要高质量的文档,React Navigation 也不例外。
在 react-navigation/react-navigation.github.io 仓库上阅读更多关于文档的信息。
回复问题
为 React Navigation 做出贡献的另一种好方法是回复问题。也许是回答别人的问题,指出他们代码中的一个小错字,或者帮助他们一起构建一个复现。如果您对在 React Navigation 中扮演更积极的角色感兴趣,请从回复问题开始 - 这不仅有帮助,而且还展示了您对代码的承诺和知识!
错误修复
发现一个错误,修复它,整天你都会有好运!就像之前提到的,错误会发生。如果您发现一个错误,请执行以下操作
- 检查是否已存在解决该错误的拉取请求。如果存在,请对其进行审查并留下您的评论
- 如果还没有拉取请求,那么就找出修复方法!如果它相对较小,请继续修复它并提交拉取请求。如果它有相当多的更改,请先提交一个问题,以便我们可以讨论它(请参阅大型拉取请求部分)
- 如果存在与该错误相关的问题,请在该问题上留下评论,链接到您的拉取请求,以便其他人知道它已被解决。
查看 help wanted 和 good first issue 标签,看看您可以从哪里开始提供帮助!
建议功能
有什么您希望在 React Navigation 中看到的功能吗?请在 Canny 上创建功能请求。
大型拉取请求
对于任何将添加/删除/修改项目中多个文件的更改(新功能或错误修复),请暂缓立即编写代码。原因有以下几点
- 大型拉取请求需要花费大量时间来审查,有时很难理解上下文
- 通常,您可能不需要做出像您预期的那么大的更改
考虑到这一点,这是建议
- 打开一个问题,清楚地定义您想要完成什么以及您打算如何完成它
- 与社区和维护者讨论该解决方案。提供背景信息,确定边缘情况,并确定设计
- 确定行动计划
- 编写代码并提交 PR
- 审查 PR。这可能需要一些时间,但是,如果您遵循上述步骤,希望不会花费太多时间。
我们希望这样做是为了节省大家的时间。也许该功能已经存在但没有文档记录?或者它可能与库不符。无论如何,通过预先讨论重大更改,您都在节省您和他人的时间。
信息
问题模板
在提交问题之前,请查看问题模板并遵循它。这样做是为了帮助所有人更好地理解您遇到的问题,并减少来回沟通以获取必要的信息。
是的,完成问题模板需要时间和精力。但这是提出真正得到响应的高质量问题的唯一方法。
您是宁愿花 1 分钟创建一个不完整的问题报告并等待数月才能得到任何形式的回复?还是宁愿花 20 分钟填写一份高质量的问题报告,其中包含所有必要的要素,并在几天内得到回复?对于任何愿意花时间审查您的问题的人来说,这也是一件尊重的事情。
拉取请求模板
与问题模板非常相似,拉取请求模板列出了说明,以确保您的拉取请求得到及时审查并减少来回沟通。在开始编写任何代码之前,请务必查看它。
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 workspaces 和 lerna 管理的软件包使用 monorepo 结构。所有软件包都位于 packages/ 目录下。
代码审查指南
四处看看。匹配代码库其余部分的风格。本项目使用 ESLint 来确保整个项目的一致性。您可以通过运行以下命令来检查您的项目
yarn lint
如果发生任何错误,您要么必须手动修复它们,要么可以尝试通过运行以下命令自动修复它们
yarn lint --fix
代码库是用 TypeScript 编写的,并且必须通过类型检查。要类型检查文件,请运行
yarn typescript
在项目上工作时,以 watch 模式运行类型检查非常有用。为此,请运行
yarn typescript --watch
运行示例应用
示例应用包含各种模式,并用作贡献者手动集成测试更改的简单方法。
在开发过程中,您可以运行带有 Expo 的 示例应用来测试您的更改
yarn example start
运行测试
React Navigation 具有在 Jest 中实现的测试。要运行其中任何一个,请从 React Navigation 目录中运行以下任一命令(在安装 node_modules
之后)以运行测试或类型检查。
yarn test
在项目上工作时,以 watch 模式运行测试非常有用。为此,请运行
yarn test --watch
这些命令将由我们的 CI 运行,并且在合并任何贡献之前都需要通过。