#
グロブの説明グロブとは、ファイルパスをマッチングするために使用されるリテラル文字またはワイルドカード文字(あるいはその両方)の文字列です。グロビングとは、1つ以上のグロブを使用してファイルシステム上のファイルを見つける行為のことです。
src()
メソッドは、パイプラインが処理するファイルを決定するために、単一のグロブ文字列またはグロブの配列を必要とします。グロブが1つ以上一致しない場合、src()
はエラーとなります。グロブの配列を使用する場合、それらは配列の順にマッチングされます。これは特に、否定グロブに役立ちます。
#
セグメントと区切り文字セグメントとは、区切り文字で区切られたすべてのものです。グロブの区切り文字は常に/
文字です。これは、オペレーティングシステムに関係なく、Windowsでパス区切り文字が\\
の場合でも同様です。グロブでは、\\
はエスケープ文字として予約されています。
ここで、*はエスケープされているため、ワイルドカード文字ではなくリテラルとして扱われます。
グロブを作成するために、Nodeのpath.join
のようなpath
メソッドを使用しないでください。Windowsでは、Nodeが区切り文字として\\
を使用するため、無効なグロブが生成されます。また、同じ理由で、__dirname
グローバル、__filename
グローバル、またはprocess.cwd()
を使用することも避けてください。
#
特殊文字:*(シングルスター)単一のセグメント内の任意の文字数(0文字を含む)にマッチします。1つのディレクトリ内のファイルをグロビングするのに役立ちます。
このグロブは、index.js
のようなファイルにはマッチしますが、scripts/index.js
やscripts/nested/index.js
のようなファイルにはマッチしません。
#
特殊文字:**(ダブルスター)セグメントをまたいで、任意の文字数(0文字を含む)にマッチします。ネストされたディレクトリ内のファイルをグロビングするのに役立ちます。不要に大きなディレクトリにマッチしないように、ダブルスターグロブを適切に制限するようにしてください。
ここで、グロブはscripts/
ディレクトリに適切に制限されています。これにより、scripts/index.js
、scripts/nested/index.js
、およびscripts/nested/twice/index.js
のようなファイルにマッチします。
#
特殊文字:!(否定)グロブは配列の順にマッチングされるため、否定グロブは、配列内に少なくとも1つの非否定グロブの後に続く必要があります。最初に一致するセットが見つかり、次に否定グロブがそれらの結果の一部を削除します。ディレクトリ内のすべてのファイルを除外する場合、ディレクトリ名の後に/**
を追加する必要があります。これは、グロビングライブラリによって内部的に最適化されます。
否定グロブの後に非否定グロブが続くと、後続のマッチングセットから何も削除されません。
否定グロブは、ダブルスターグロブを制限するための代替として使用できます。
#
重複するグロブ(意図的または意図せず)同じファイルにマッチする2つ以上のグロブは、重複していると見なされます。単一のsrc()
内で重複するグロブが使用されている場合、gulpは重複を削除するために最善を尽くしますが、別々のsrc()
呼び出し間で重複を排除しようとはしません。
#
高度なリソースgulpでグロブを扱うために必要なことのほとんどは、ここで説明されています。より深く理解したい場合は、いくつかのリソースを以下に示します。