Out-of-Treeプラットフォーム
React Native は Android および iOS デバイスだけのものではありません。パートナーやコミュニティは、React Native を他のプラットフォームに導入するためのプロジェクトを維持しています。たとえば、次のものがあります。
パートナーから
- React Native macOS - macOS および Cocoa 用の React Native。
- React Native Windows - Microsoft の Universal Windows Platform (UWP) 用の React Native。
- React Native visionOS - Apple の visionOS 用の React Native。
コミュニティから
- React Native tvOS - Apple TV および Android TV デバイス用の React Native。
- React Native Web - React DOM を使用した Web 上の React Native。
- React Native Skia - Skia をレンダラーとして使用する React Native。現在、Linux と macOS をサポートしています。
独自の React Native プラットフォームの作成
現時点では、ゼロから React Native プラットフォームを作成するプロセスはあまり文書化されていません。今後の再アーキテクチャ (Fabric) の目標の 1 つは、プラットフォームの保守を容易にすることです。
バンドル
React Native 0.57 以降、React Native の JavaScript バンドラーである Metro に React Native プラットフォームを登録できるようになりました。これは、npx react-native bundle に --platform example を渡すと、.example.js サフィックスを持つ JavaScript ファイルが検索されることを意味します。
RNPM にプラットフォームを登録するには、モジュールの名前が次のいずれかのパターンと一致する必要があります
react-native-example-react-native-で始まるすべてのトップレベルモジュールを検索します。@org/react-native-example- 任意のスコープでreact-native-で始まるモジュールを検索します。@react-native-example/module-@react-native-で始まる名前を持つスコープ内のすべてのモジュールを検索します。
package.json に次のようなエントリも必要です。
json
{
"rnpm": {
"haste": {
"providesModuleNodeModules": ["react-native-example"],
"platforms": ["example"]
}
}
}
"providesModuleNodeModules" は Haste モジュール検索パスに追加されるモジュールの配列で、"platforms" は有効なプラットフォームとして追加されるプラットフォームサフィックスの配列です。