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

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

タスク結果のキャッシュ

タスク実行やキャッシュなどの機能において、LernaとNxは互換的に使用できます。「Lernaがビルドをキャッシュ可能」と記載されている場合、これはLernaがビルドキャッシュ機能を持つNxを利用していることを意味します。

同じコードを繰り返し再ビルド・再テストするのは非効率的です。Lernaは計算キャッシュを利用し、同一コードの二度目のビルドを不要にします。

セットアップ

Lerna(Nx経由)は高度に洗練され実戦検証済みの計算キャッシュシステムを備えています。実行しようとしているタスクが過去に実施済みかどうかを判断し、キャッシュから結果を復元できます。

ヒント

nx.jsonが存在しない場合、npx lerna add-cachingを実行してください。

buildtestのキャッシュを有効化するには、nx.jsontargetDefaultsプロパティを編集してbuildおよびtestタスクを含めてください:

nx.json
{
"targetDefaults": {
"build": {
"cache": true
},
"test": {
"cache": true
}
}
}
情報

注意:キャッシュ可能な操作は副作用フリーである必要があります。つまり、同じ入力に対して常に同じ出力が得られる必要があります。例として、バックエンドAPIにアクセスするe2eテストは、バックエンドがテスト結果に影響する可能性があるためキャッシュできません。

次のコマンドを2回実行してください。2回目は即時に処理が完了します:

lerna run build --scope=header
Terminal Output
> lerna run build --scope=header

> header:build [existing outputs match the cache, left as is]

> header@0.0.0 build
> rimraf dist && rollup --config


src/index.tsx → dist...
created dist in 858ms

—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

Lerna (powered by Nx) Successfully ran target test for project header (4ms)

Nx read the output from the cache instead of running the command for 1 out of 1 tasks.

キャッシュからの再生

Lernaがタスクの入力が変更されていないと判断した場合、実際にマシン上で実行したかのようにタスク出力を再現します(ただし遥かに高速です)。キャッシュされたタスクの出力には、ターミナル出力と、タスク用に定義されたoutputディレクトリに作成されたファイルの両方が含まれます。

header:buildタスクが出力するdistフォルダを削除し、再度lerna run build --scope=headerを実行することで確認できます。キャッシュされたタスクが即座に再生され、distフォルダに正しいファイルが生成されます。

header/
└── dist/ <-- this folder gets recreated

タスクの出力成果物が異なる場所に作成される場合、キャッシュされる出力フォルダを変更できます。また、変更時にキャッシュを無効化する入力内容をカスタマイズすることも可能です。

高度なキャッシュ設定

キャッシュ実装の詳細な理解とリポジトリ向けのキャッシュ微調整については、キャッシュの仕組みをご覧ください。

ローカル計算キャッシュ

デフォルトでは、Lerna(Nx経由)はローカル計算キャッシュを使用します。Nxはキャッシュ値を1週間のみ保持し、その後削除します。キャッシュをクリアするにはnx resetを実行してください。次回アクセス時にNxが新たなキャッシュを作成します。