Codegen CLI
Gradle を呼び出したり、手動でスクリプトを呼び出したりするのは覚えにくく、多くの手順が必要です。
これを簡略化するために、これらのタスクの実行を支援する CLI ツールを作成しました。それが Codegen CLI です。このコマンドは、あなたのプロジェクトで @react-native/codegen を実行します。以下のオプションが利用可能です。
sh
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 に基づいてコードを生成します。
shell
npx @react-native-community/cli codegen
- 現在の作業ディレクトリから
package.json
を読み込み、codegenConfig で定義された場所に iOS コードを生成します。
shell
npx @react-native-community/cli codegen --platform ios
third-party/some-library
からpackage.json
を読み込み、third-party/some-library/android/generated
に Android コードを生成します。
shell
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 の両方のアーキテクチャをサポートするために2セットのファイルを含める必要がありません。New Architecture のものだけを保持すればよく、後方互換性が保証されます。
- すべてのネイティブコードがそこにあるため、ライブラリのネイティブ部分を prebuild として配布することが可能です。
一方で、一つの欠点にも注意する必要があります。
- 生成されたコードは、ライブラリ内で定義された React Native のバージョンを使用します。したがって、ライブラリが React Native 0.76 で出荷されている場合、生成されるコードはそのバージョンに基づきます。これは、生成されたコードがアプリで使用されている 以前の React Native バージョン(例えば、React Native 0.75 で実行されているアプリ)と互換性がない可能性があることを意味します。
includesGeneratedCode
を有効にする
この設定を有効にするには:
- ライブラリの
package.json
ファイルにあるcodegenConfig
フィールドにincludesGeneratedCode
プロパティを追加します。その値をtrue
に設定します。 - Codegen CLI を使用してローカルで Codegen を実行します。
- 生成されたコードを含めるように
package.json
を更新します。 - 生成されたコードを含めるように
podspec
を更新します。 - 生成されたコードを含めるように
build.gradle
ファイルを更新します。 react-native.config.js
のcmakeListsPath
を更新して、Gradle がビルドディレクトリではなく、あなたの outputDir 内で CMakeLists ファイルを探すようにします。