キャッシュする対象?
デフォルトでは、すべてのタスクからのコンソール出力はTurborepoによって常にキャプチャされます。タスクがファイルを出力しない場合(例:Jestを使用した単体テスト)、outputs
を省略できます。それ以外の場合、後続の依存タスクを実行できるようにするために、ディスク上のどのファイルをキャプチャ(および復元)する必要があるかを一般的に指定する必要があります。
キャッシュ出力の設定
Turborepoでキャッシュ出力を設定するには、この例のようにpipeline.<task>.outputs
内にグロブの配列を指定します。
{
"$schema": "https://turbo.dokyumento.jp/schema.json",
"pipeline": {
"build": {
"outputs": ["dist/**"]
}
}
}
インクルージョン
build
のタスク定義では、それがTurborepo全体のすべてのbuild
タスクに適用されることに注意してください。これらの個々のタスクの出力場所には、特にリポジトリが大きくなるにつれて、わずかな違いがある可能性が非常に高いです。
たとえば、ビルド中に生成されたアーティファクトがdist
ではなくlib
に表示されるユーティリティワークスペースがある場合があります。つまり、以前の定義は、出力アーティファクトがdist
に表示されるユーティリティとアプリケーションの両方では機能しません。
これに対処するには2つの方法があります。最初のオプションは、lib
ディレクトリを出力に含めることです。
{
"$schema": "https://turbo.dokyumento.jp/schema.json",
"pipeline": {
"build": {
"outputs": ["dist/**", "lib/**"]
}
}
}
このパターンは、dist
とlib
フォルダがTurborepoのすべてのワークスペースで空から始まる限りうまく機能します。turbo
は、これらのフォルダに表示されるすべてのファイルをキャプチャします。
ただし、パターンがすべてのワークスペースで十分に一貫性がない場合は、ワークスペースごとに定義するか、ワークスペースの設定を使用できます。
{
"$schema": "https://turbo.dokyumento.jp/schema.json",
"pipeline": {
"app#build": {
"outputs": ["dist/**"]
},
"util#build": {
"outputs": ["lib/**"]
}
}
}
/**
演算子を使用して、ディレクトリ内のすべてのファイルを指定する必要があることに注意してください。lib
など)ディレクトリ名だけを指定すると、そのコンテンツではなく、ディレクトリ自体のみが含まれます。
エクスクルージョン
キャッシュする必要があるファイルを指定する最も簡単な方法は、含めるファイルと、含めるセット内のどのファイルを除外するかの組み合わせを指定することです。
たとえば、デフォルト設定のNext.jsアプリケーションの最も単純な構成は次のようになります。
{
"$schema": "https://turbo.dokyumento.jp/schema.json",
"pipeline": {
"app#build": {
"outputs": [".next/**", "!.next/cache/**"],
}
}
}
ファイルを除外するには、先頭に!
が付いたグロブパターンを指定して、一致するものをすべて除外します。