メインコンテンツへスキップ
非公式ベータ版翻訳

このページは PageTurner AI で翻訳されました(ベータ版)。プロジェクト公式の承認はありません。 エラーを見つけましたか? 問題を報告 →

タスクの実行

モノレポには数百、時には数千のプロジェクトが存在することがあるため、npmスクリプトをすべて(または一部)のプロジェクトに対して実行できることは、Lernaのようなツールの重要な機能です。

用語定義

  • コマンド - 開発者がターミナルに入力する操作(例: lerna run build --scope=header --concurrency=5

  • ターゲット - npmスクリプトの名前(例: build

  • タスク - npmスクリプトの呼び出し単位(例: header:build

サンプルリポジトリ

例はこのリポジトリに基づいています。必要に応じてクローンして操作してみてください。

すべてのタスクを実行

各プロジェクトにはtestbuildスクリプトが定義されています。

実行:

npx lerna run build

これによりプロジェクトが正しい順序でビルドされます: footerheaderを先に処理し、その後remixappを処理します。

Terminal Output
    ✔  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

例えば、特定のパッケージでbuildtestより先に実行される必要があるなど、タスク間に依存関係がある場合でも、適切なタスクパイプライン設定を行っていれば、タスクランナーが自動的に調整します。

単一パッケージのタスク実行

開発中にすべてのビルドやテストを実行することは稀です。通常は変更中のプロジェクトのみを対象に実行します。例えば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