問題タブ [lerna]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - lerna を使用して、react および node js Web アプリケーション用の monorepo を実装する
反応とノード js アプリケーションで構成される monorepo を構築しようとしているため、反応アプリを使用して作成された frontEnd フォルダーと、すべてのサーバー コードで構成される backEnd フォルダーです。
以下の手順を実行しました
lerna をグローバルにインストール
新しいフォルダーを作成し、リポジトリを初期化しました。
新しいフォルダー内で lerna init を実行すると、2 つのファイル lerna.json、package.json、および 1 つのフォルダーがパッケージとして作成されます。
packages フォルダー内で create-react-app frontEnd を実行すると、新しい反応アプリケーションが作成されました
コマンド mkdir backEnd を実行して、packages フォルダーに backEnd フォルダーを作成します。
現在、私のパッケージ フォルダーは、frontEnd と backEnd の 2 つのフォルダーで構成されています。
フロントエンドは create-react-app に付属する package.json で構成されています
質問
package.json を frontEnd フォルダーから削除する必要がありますか?
ルート フォルダーで lerna.json と package.json を構成する方法。
どうすればアプリケーションを実行できますか?
検索しましたが、create-react-app を使用して lerna で react-nodejs アプリケーションを作成するためのソリューションが得られません
node.js - monorepo の package.json でリポジトリ フィールドを構成する
状況
lerna
私は40-50のプロジェクトで作成されたmonorepoを持っています。それぞれpackage.json
こんな感じです。
フォルダ構成はこんな感じで、
それを github にプッシュすると、単一の github url が含まれbabel
ますが、142 個のパッケージがあり、それぞれrepository
にpackage.json
.
142 個のパッケージに対してこの値を手動で設定していないことを願っています。私の40個の小さなパッケージと同じです。
この質問を書いている時点で、手動で 3 ~ 4 分で設定できることを理解しています。ただし、150パッケージのモノレポで同じことをやろうとすると、または将来的にこれは圧倒されます。
問題
package.json
40 個のパッケージの各ファイルを手動で開かずに、リポジトリ フィールドを設定/更新するにはどうすればよいですか?
私が試したこと
可能な限りそれぞれを手動で設定しましたが、私がプログラマーであることを考えると、物事はすぐに退屈になり、繰り返されました. それから私は解決策を約1時間ググった. 最後に、次のスクリプトを書きました。
これに対処する簡単な方法はありますか?shell
、git
、yarn
またはnpm
コマンドの種類は?
unix - すべての lerna --parallel タスクを一度に中断します
lerna dev
オプションを使用して複数のパッケージの開発サーバーを起動する lerna スクリプト ( ) があり--parallel
ます (このオプションを使用しない場合、最初のサービスのみが起動し、他のサービスは起動しません)。これらのサーバーは、ホット リロードを使用して、異なるポートで開発モードでそれぞれのアプリを提供します。1 つのコマンドを入力するだけで複数のパッケージの作業を開始できるため、基本的にはスムーズな開発が可能です。
私が気付いた問題は、この lerna タスクを中断すると、サーバーがシャットダウンされないことです。コマンドを実行すると、lerna dev
サーバーが使用するポートで既に実行されていることを説明するメッセージが出力されます。これが意味することは、( +lerna dev
を使用して) コマンドをシャットダウンすると、実行中のすべてのプロセスが強制終了されるわけではありません (一部は強制終了され、一部は強制終了されません)。CTRLC
興味深いことに、シャットダウンしないのはcreate-react-app projects
.
lerna run
だからここに私の質問があります: オプションを指定してコマンドを介して開始されたプロセス--parallel
がすべてメインプロセスと一緒に強制終了されるようにするにはどうすればよいですか?
PS: これは Unix システムで発生し、Windows は使用していません。