web-dev-qa-db-ja.com

LernaをReact Native?

Lerna( lernajs.io )をReact Nativeで使用することは可能ですか?次の構造で新しいプロジェクトを作成しようとしています:

MyApp
  packages
    myapp-core
    myapp-mobile
    myapp-web

lerna bootstrapcoreまたはwebに問題はないようですが、mobile(React Native)プロジェクト)myapp-coreモジュールの検索を拒否します。

React Nativeのnpm linkに問題があることを思い出します。それが問題の原因ですか?この機能は最終的に存在するものですか?

11
samcorcos

react-native: 0.40.0の時点では、lernaは期待どおりに機能しているようです。 sharedパッケージを使用してa Reactとa Reactこれらのネイティブアプリの両方の背景色を変更する最小限のデモアプリを作成しました興味のある人:

https://github.com/samcorcos/learna-react-native

再現する手順:

  1. リポジトリとcdのクローンを作成します
  2. npm install
  3. ./node_modules/.bin/lerna bootstrap

次に、各アプリ(reactの場合はnpm start、reactnativeの場合はreact-native run-ios)を実行すると、共有リポジトリからの入力に基づいて背景が赤に変更されます。新しいパッケージを追加するときは、Webプロジェクトとモバイルプロジェクトの両方にsharedを追加したのと同じように、関連するpackage.jsonファイルのそれぞれに新しいパッケージを追加してください。

このプロジェクトは、Lernaの--independentバージョン管理システムを利用していないことに注意してください。

8
samcorcos

コメントで述べたように React Nativeパッケージャーはシンボリックリンクで動作していません 。これにより、同じモノレポからローカルサブパッケージへのシンボリックリンクを作成するLernaを使用できなくなります。

幸い、シンボリックリンクをサポートする代替パッケージャーがあります。これまでのところうまく機能しています https://github.com/callstack-io/haul/

1

はい、ネイティブおよび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

0
locropulenton