#
解释Globs通配符是一串用于匹配文件路径的文字和/或通配符字符。通配是使用一个或多个通配符在文件系统上定位文件的行为。
src()
方法期望一个单个通配符字符串或一个通配符数组,以确定您的流水线将操作哪些文件。必须至少找到一个匹配项以避免src()
出错。当使用通配符数组时,它们按数组顺序匹配 - 对于负通配符特别有用。
#
段和分隔符段是分隔符之间的所有内容。通配符中的分隔符始终是/
字符 - 无论操作系统如何 - 即使在路径分隔符为\\
的Windows系统中也是如此。在通配符中,\\
被保留为转义字符。
在这里,*被转义,因此它被视为文字而不是通配符字符。
避免使用Node的path
方法,如path.join
,来创建全局通配符。在Windows上,它会生成无效的全局通配符,因为Node使用\\
作为分隔符。同样,出于相同的原因,避免使用__dirname
全局变量,__filename
全局变量,或process.cwd()
。
#
特殊字符:*(单星号)匹配单个段内的任意数量(包括零)字符。用于在一个目录中进行文件全局匹配。
此全局通配符将匹配像index.js
这样的文件,但不会匹配像scripts/index.js
或scripts/nested/index.js
这样的文件。
#
特殊字符:**(双星号)匹配跨段的任意数量(包括零)字符。用于在嵌套目录中进行文件全局匹配。确保适当限制双星号全局通配符,以避免不必要地匹配大型目录。
在这里,全局通配符适当限制在scripts/
目录中。它将匹配像scripts/index.js
,scripts/nested/index.js
和scripts/nested/twice/index.js
这样的文件。
#
特殊字符:!(否定)由于全局通配符按数组顺序匹配,否定通配符必须在数组中至少跟随一个非否定通配符。第一个找到一组匹配项,然后否定通配符会移除其中的一部分结果。当排除目录中的所有文件时,必须在目录名称后添加/**
,这是全局通配符库在内部进行优化的。
如果在否定之后有任何非负的通配符,后续匹配集合中将不会删除任何内容。
负通配符可用作限制双星通配符的替代方法。
#
重叠的通配符两个或更多个(无意间)匹配同一文件的通配符被视为重叠。当在单个src()
中使用重叠的通配符时,gulp会尽力删除重复项,但不会尝试在不同的src()
调用之间去重。
#
高级资源大部分关于在gulp中使用通配符的内容都在这里涵盖了。如果您想深入了解,这里有一些资源。