如何贡献代码
本页面由 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 运行- 需要构建的包配置在 scripts/build/config.js
-
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 提案修改的流程可概括如下:
-
Fork React Native 仓库并从
main分支创建您的分支 -
若新增代码需要测试,请添加测试用例
-
若修改了 API,请更新相关文档
-
确保测试套件通过(可在本地或 PR 创建后通过 CI 验证)
-
确保代码通过 lint 检查(例如通过
yarn lint --fix) -
使用
yarn build-types --validate验证是否修改了 JS 公共 API。若有修改,请运行yarn build-types重新生成快照 -
将修改推送到您的 fork 仓库
-
向 React Native 仓库创建 pull request
-
审核并处理 pull request 中的评论
-
机器人可能提供建议评论,通常需要先解决这些问题维护者才会审核代码
-
若尚未签署,请提交贡献者许可协议("CLA")
如一切顺利,您的 pull request 将被合并。若未被合并,维护者会尽力说明原因。
若是首次提交 pull request,我们准备了分步指南帮助您入门。更多关于 PR 处理的详细信息,请参阅管理 Pull Request页面。
贡献者许可协议
为接受您的 pull request,需要您签署贡献者许可协议(CLA)。您只需签署一次即可参与 Meta 任何开源项目。该过程仅需一分钟,可在安装依赖时完成。
许可协议
贡献 React Native 即表示您同意,您的贡献将遵循 React Native 仓库根目录中的LICENSE文件授权。