我的Gruntfile
.
js
files: ['<%= yeoman.app %>/scripts/{,*/}*.coffee'],
谁能告诉我什么{,*/}*
意思?我知道它正在尝试匹配.coffee
脚本文件夹中的所有文件,但我想知道它是如何做到的。
{,*/}
匹配脚本和 .coffee 文件之间的一个或零个目录。{} 内部实际上有两个匹配项,用逗号分隔。一个是空白,由逗号左侧没有字符表示。一个是任意数量的字符和一个正斜杠。最后的 * 与 .coffee 扩展名之前的文件名匹配。
顺便说一句,这不是正则表达式,它是通配符。
根据文档:
此外,因为这是 JavaScript,所以您不仅限于 JSON;您可以在此处使用任何有效的 JavaScript。如有必要,您甚至可以以编程方式生成配置。
它看起来像{,*/}*
匹配JSON
:
{
'' = empty space matches no character
, = or
* = Any Characters (except slash) (wildcard)
/ = literal slash
}
* = Any Characters (except slash) (wildcard)
更新 找到另一个资源:
通配模式
单独指定所有源文件路径通常是不切实际的,因此 Grunt 通过内置的 node-glob 和 minimatch 库支持文件名扩展(也称为 globbing)。
虽然这不是关于 globbing 模式的综合教程,但要知道在文件路径中:
* 匹配任意数量的字符,但不匹配 /
? 匹配单个字符,但不匹配 /
** 匹配任意数量的字符,包括 /,只要它是路径部分中的唯一内容
{} 允许以逗号分隔的“或”表达式列表
!在模式的开头将否定匹配