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を使用したウェブ上のReact Native。
- React Native Skia - レンダラーとしてSkiaを使用したReact Native。現在、LinuxとmacOSをサポートしています。
独自のReact Nativeプラットフォームを作成する
現在、React Nativeプラットフォームをゼロから作成するプロセスはあまり文書化されていません。今後の再アーキテクチャ(Fabric)の目標の1つは、プラットフォームのメンテナンスを容易にすることです。
バンドル
React Native 0.57から、独自のReact NativeプラットフォームをReact NativeのJavaScriptバンドラーであるMetroに登録できるようになりました。これにより、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"
は有効なプラットフォームとして追加されるプラットフォームサフィックスの配列です。