メインコンテンツへスキップ

Out-of-Treeプラットフォーム

React NativeはAndroidやiOSデバイスだけのためのものではありません。パートナーやコミュニティが、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"は有効なプラットフォームとして追加されるプラットフォームサフィックスの配列です。