タスクの実行
モノレポには、数百または数千ものプロジェクトが含まれる場合があります。そのため、それらのすべて(または一部)に対して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