Out-of-Tree Platforms
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를 지원.
리액트 네이티브 플랫폼 직접 만들기
현재 리액트 네이티브 플랫폼을 처음부터 만드는 과정은 잘 문서화되어 있지 않다. 다가오는 재구조화(Fabric)의 주요 목표 중 하나는 플랫폼 유지 관리를 더 쉽게 만드는 것이다.
번들링
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"
는 유효한 플랫폼 접미사로 추가될 플랫폼들의 배열이다.