タスクのスキップ
ビルドキャッシュはタスクを大幅に高速化できますが、npx turbo-ignore
を使用することで、さらに改善できます。ワークスペースがコードの変更の影響を受けていない場合、タスクの実行を完全にスキップできます。
web
アプリケーション(またはそのパッケージの依存関係)に変更がない場合、web
ワークスペースの単体テストをスキップしたいとします。すでにリモートキャッシュ (新しいタブで開きます)を使用している場合、おそらくキャッシュヒットするでしょうが、CIコンテナのプロビジョニング、npm
の依存関係のインストールなど、時間がかかる可能性のある処理に時間を費やすことになります。
理想的には、まず最初にそれらの作業を行う必要があるかどうかを簡単に確認します。
リポジトリをチェックアウトした後、他の作業を始める**前に**、親コミット以降にweb
テストが変更されたかどうかを確認するのに数秒かかる場合があります。
npx turbo-ignore web --task=test
このコマンドは、次のことを行います。
web
ワークスペースをフィルタリングします。- 親コミットと比較して、
test
タスクのdry
出力を生成します。 - 出力を解析して、どのパッケージが変更されたかを判断します。
- 変更が検出された場合は、
1
コードで終了します。それ以外の場合は、0
で終了します。
このタスクで>>> FULL TURBO
キャッシュをヒットさせることができたかもしれませんが、CIを実行するために必要な他のセットアップタスクの時間を節約できました。
turbo-ignore
の使用
影響を受けない作業をスキップするには、まず、git履歴がマシンで利用可能であることを確認してください。次に、npx turbo-ignore
を実行します。
turbo-ignore
は、--filter
フラグと --dry=json
フラグを組み合わせて、親コミットから現在のコミットへの変更を検出し、影響を受けるパッケージを特定します。デフォルトでは、turbo-ignore
は現在の作業ディレクトリでのビルドタスクの差分を検出しますが、フラグを使用してこの動作をカスタマイズすることができます。
以下は、構築および実行されるコマンドの例です。
npx turbo run build --filter=@example/web...3c8387ffd98b751305fe3f0284befdd00cbd4610 --dry=json
ドライランはビルドタスクを実行しないことに注意してください。代わりに、コード変更がビルド(または他のタスク)に影響を与えるかどうかをわずか数秒でパッケージをチェックします。
turbo-ignore
がタスクをスキップできると判断した場合、プロセスは 0
のコードで終了します。変更が見つかった場合は、プロセスは 1
で終了します。
動作のカスタマイズ
ワークスペースを指定するには、次のようにコマンドに追加できます。
npx turbo-ignore web
ここで、web
は、デフォルトの build
タスクを実行するワークスペースの名前です。
タスクを変更したい場合は、--task
フラグを使用して、turbo-ignore
が呼び出すコマンドのタスクを指定します。
Vercelでの turbo-ignore
の使用
Vercelでnpx turbo-ignore
を使用するには、無視されたビルドステップ (新しいタブで開きます)機能を使用できます。Vercelは、turbo-ignore
を正常に実行するための正しい引数を自動的に推測します。
動作のカスタマイズ
Vercelでは、デフォルトの比較が利用できない場合に比較対象となるGit参照をVercelに提供するために、--fallback
フラグを指定できます。デフォルトでは、Vercelは最後にデプロイされたSHAと比較するため、これはブランチへの最初のコミットでデプロイを回避するなどのユースケースに役立ちます。