Codegen CLI 工具
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
直接调用 Gradle 或手动执行脚本不仅难以记忆,而且操作流程繁琐复杂。
为简化这一过程,我们开发了 Codegen CLI 工具来协助执行这些任务。该命令会为您的项目运行 @react-native/codegen 包,支持以下功能选项:
npx @react-native-community/cli codegen --help
Usage: rnc-cli codegen [options]
Options:
--verbose Increase logging verbosity
--path <path> Path to the React Native project root. (default: "/Users/MyUsername/projects/my-app")
--platform <string> Target platform. Supported values: "android", "ios", "all". (default: "all")
--outputPath <path> Path where generated artifacts will be output to.
-h, --help display help for command
使用示例
- 读取当前工作目录下的
package.json,根据其中 codegenConfig 配置生成代码
npx @react-native-community/cli codegen
- 读取当前工作目录下的
package.json,在 codegenConfig 指定位置生成 iOS 平台代码
npx @react-native-community/cli codegen --platform ios
- 读取
third-party/some-library路径下的package.json,在third-party/some-library/android/generated生成 Android 平台代码
npx @react-native-community/cli codegen \
--path third-party/some-library \
--platform android \
--outputPath third-party/some-library/android/generated
将生成的代码包含到库中
Codegen CLI 对库开发者而言非常实用,可用来预览生成代码以确定需要实现的接口。
通常生成代码不会包含在库中,而是由使用该库的应用在构建时运行 Codegen 生成。
这种模式适用于多数场景,但 Codegen 也支持通过 includesGeneratedCode 属性将生成代码直接集成到库内部。
理解启用 includesGeneratedCode = true 的影响至关重要,直接集成生成代码具有以下优势:
-
无需依赖应用执行 Codegen,生成代码始终可用
-
实现文件与生成接口始终保持一致(增强库代码对 Codegen API 变更的兼容性)
-
Android 平台无需维护两套文件支持不同架构,仅保留新架构文件即可确保向后兼容
-
所有原生代码均已就绪,可将库的原生部分作为预构建包分发
但同时也需注意以下局限:
- 生成代码基于库内指定的 React Native 版本(例如库使用 React Native 0.76 时,生成代码将适配该版本),可能导致与使用旧版 React Native 的应用(如运行 0.75 版)不兼容
启用 includesGeneratedCode
启用此模式的操作步骤:
-
在库的
package.json文件中,向codegenConfig字段添加值为true的includesGeneratedCode属性 -
使用 codegen CLI 在本地运行 Codegen
-
更新
package.json以包含生成代码 -
更新
podspec文件以包含生成代码 -
更新
build.Gradle文件以包含生成代码 -
在
react-native.config.js中更新cmakeListsPath,使 Gradle 从您的输出目录而非构建目录查找 CMakeLists 文件