このページは PageTurner AI で翻訳されました(ベータ版)。プロジェクト公式の承認はありません。 エラーを見つけましたか? 問題を報告 →
タスクの実行
モノレポには数百、時には数千のプロジェクトが存在することがあるため、npmス クリプトをすべて(または一部)のプロジェクトに対して実行できることは、Lernaのようなツールの重要な機能です。
用語定義
-
コマンド - 開発者がターミナルに入力する操作(例:
lerna run build --scope=header --concurrency=5) -
ターゲット - npmスクリプトの名前(例:
build) -
タスク - npmスクリプトの呼び出し単位(例:
header:build)
サンプルリポジトリ
例はこのリポジトリに基づいています。必要に応じてクローンして操作してみてください。
すべてのタスクを実行
各プロジェクトにはtestとbuildスクリプトが定義されています。
実行:
npx lerna run build
これによりプロジェクトが正しい順序でビルドされます: footerとheaderを先に処理し、その後remixappを処理します。
✔ header:build (501ms)
✔ footer:build (503ms)
✔ remixapp:build (670ms)
—————————————————————————————————————————————————————————————————————————————
Lerna (powered by Nx) Successfully ran target build for 3 projects (1s)
Lernaは各ビルドスクリプトの内容を考慮しません。buildという名前自体も特別な意味を持たず、単なるnpmスクリプトの名称です。
複数タスクの並行実行
カンマ区切りでターゲットリストを指定すると、複数のタスクを並行して実行できます。
npx lerna run test,build,lint
例えば、特定のパッケージでbuildがtestより先に実行される必要があるなど、タスク間に依存関係がある場合でも、適切なタスクパイプライン設定を行っていれば、タスクランナーが自動的に調整します。
単一パッケージのタスク実行
開発中にすべてのビルドやテストを実行することは稀です。通常は変更中のプロジェクトのみを対象に実行します。例えばheaderのテストは次のように実行できます:
npx lerna run test --scope=header
PR影響範囲のタスク実行
PRで影響を受けるすべてのプロジェクトに対して、次のようにコマンドを実行できます:
npx lerna run test --since=origin/main
詳細はコマンドリファレンスをご覧ください。
タスク実行の制御
タスクの実行順序をより細かく制御するには、タスクパイプライン設定を編集 してください。
タスク実行を高速化するには、タスク結果のキャッシュとタスクの分散実行を参照してください。
.envファイルの自動読み込み
Nxを基盤とする最新のタスクランナーは、デフォルトで.envファイルを自動的に読み込みます。この動作を無効化したい場合は、任意の理由で--load-env-filesをfalseに設定できます。
デフォルトで読み込まれる.envファイルの詳細については、以下を参照してください: https://nx.dev/recipes/environment-variables/define-environment-variables