Lerna( lernajs.io )をReact Nativeで使用することは可能ですか?次の構造で新しいプロジェクトを作成しようとしています:
MyApp
packages
myapp-core
myapp-mobile
myapp-web
lerna bootstrap
はcore
またはweb
に問題はないようですが、mobile
(React Native)プロジェクト)myapp-core
モジュールの検索を拒否します。
React Nativeのnpm link
に問題があることを思い出します。それが問題の原因ですか?この機能は最終的に存在するものですか?
react-native: 0.40.0
の時点では、lernaは期待どおりに機能しているようです。 shared
パッケージを使用してa Reactとa Reactこれらのネイティブアプリの両方の背景色を変更する最小限のデモアプリを作成しました興味のある人:
https://github.com/samcorcos/learna-react-native
再現する手順:
cd
のクローンを作成しますnpm install
./node_modules/.bin/lerna bootstrap
次に、各アプリ(reactの場合はnpm start
、reactnativeの場合はreact-native run-ios
)を実行すると、共有リポジトリからの入力に基づいて背景が赤に変更されます。新しいパッケージを追加するときは、Webプロジェクトとモバイルプロジェクトの両方にshared
を追加したのと同じように、関連するpackage.json
ファイルのそれぞれに新しいパッケージを追加してください。
このプロジェクトは、Lernaの--independent
バージョン管理システムを利用していないことに注意してください。
コメントで述べたように React Nativeパッケージャーはシンボリックリンクで動作していません 。これにより、同じモノレポからローカルサブパッケージへのシンボリックリンクを作成するLernaを使用できなくなります。
幸い、シンボリックリンクをサポートする代替パッケージャーがあります。これまでのところうまく機能しています https://github.com/callstack-io/haul/
はい、ネイティブおよびWebプラットフォームでreactを使用してlernaを実行するワークスペースを作成することは可能です。
実際、アプリでJSロジックを共有することを目的とする場合は、レルナスタイルのモノレポでWebモバイルプロジェクトを作成することをお勧めします。
例として、次のモノレポを作成しました。
https://github.com/agrcrobles/react-native-web-workspace
詳細については、以下を参照してください。
https://blog.hellojs.org/a-cross-platform-app-with-react-in-a-monorepo-9c6aa6aed818