Codegen CLI
Gradleを呼び出すか、スクリプトを手動で呼び出すのは、覚えにくく、多くの手順を踏む必要があります。
これを簡素化するために、これらのタスクの実行を支援するCLIツール、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-codegen/cli codegen
- 現在の作業ディレクトリから`package.json`を読み込み、`codegenConfig`で定義された場所にiOSコードを生成します。
npx @react-native-codegen/cli codegen --platform ios
- `third-party/some-library`から`package.json`を読み込み、`third-party/some-library/android/generated`にAndroidコードを生成します。
npx @react-native-codegen/cli codegen \
--path third-party/some-library \
--platform android \
--outputPath third-party/some-library/android/generated
ライブラリへの生成コードの組み込み
Codegen CLIは、ライブラリ開発者にとって優れたツールです。生成されたコードを調べて、実装する必要があるインターフェースを確認したり、ライブラリに同梱するコードを生成したりすることができます。
この設定にはいくつかの利点があります。
- アプリでCodegenを実行する必要がなく、生成されたコードは常に存在します。
- 実装ファイルは、常に生成されたインターフェースと一貫しています。
- Androidで両方のアーキテクチャをサポートするために2つのファイルセットを含める必要はありません。新しいアーキテクチャのものだけを保持でき、下位互換性が保証されます。
- アプリで使用されるものと、ライブラリの開発中に使用されたものとの間で、Codegenのバージョンの不一致を心配する必要はありません。
- すべてのネイティブコードが存在するため、ライブラリのネイティブ部分をプリビルドとして配布することが可能です。
この設定を有効にするには
- ライブラリの`package.json`ファイルの`codegenConfig`フィールドに`includesGeneratedCode`プロパティを追加します。その値を`true`に設定します。
- codegen CLIを使用して、ローカルでCodegenを実行します。
- 生成されたコードを含むように`package.json`を更新します。
- 生成されたコードを含むように`podspec`を更新します。
- 生成されたコードを含むように`build.Gradle`ファイルを更新します。
- `react-native.config.js`内の`cmakeListsPath`を更新して、Gradleがビルドディレクトリではなく、`outputDir`内のCMakeListsファイルを探せるようにします。