本文へスキップ

タスクの実行

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

定義

  • コマンド - 開発者がターミナルに入力するすべてのこと(例:lerna run build --scope=header --concurrency=5)。
  • ターゲット - npmスクリプトの名前(例:build
  • タスク - npmスクリプトの呼び出し(例:header:build)。

サンプルリポジトリ

例はこのリポジトリに基づいているため、自由にクローンして実行してください。

すべてを実行

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

実行

npx lerna run build

これにより、プロジェクトが正しい順序(footerheader、そして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