15

我的Gruntfile.

js files: ['<%= yeoman.app %>/scripts/{,*/}*.coffee'],

谁能告诉我什么{,*/}*意思?我知道它正在尝试匹配.coffee脚本文件夹中的所有文件,但我想知道它是如何做到的。

4

2 回答 2

16

{,*/}匹配脚本和 .coffee 文件之间的一个或零个目录。{} 内部实际上有两个匹配项,用逗号分隔。一个是空白,由逗号左侧没有字符表示。一个是任意数量的字符和一个正斜杠。最后的 * 与 .coffee 扩展名之前的文件名匹配。

顺便说一句,这不是正则表达式,它是通配符。

于 2013-06-12T20:30:12.973 回答
6

根据文档

此外,因为这是 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 模式的综合教程,但要知道在文件路径中:

* 匹配任意数量的字符,但不匹配 /

? 匹配单个字符,但不匹配 /

** 匹配任意数量的字符,包括 /,只要它是路径部分中的唯一内容

{} 允许以逗号分隔的“或”表达式列表

!在模式的开头将否定匹配

于 2013-06-12T20:28:34.327 回答