`{,* /}`在Gruntfile.js的路径中意味着什么?

时间:2013-10-21 03:26:19

标签: node.js gruntjs yeoman yeoman-generator

Gruntfile.js,我得到了:

watch: {
    styles: {
      files: [
        '<%= yeoman.app %>/styles/{,*/}*.less'
      ],
      tasks: ['copy:styles', 'autoprefixer']
    }
}

对于路径,{,*/}确实意味着什么?它与使用双星号**/有什么不同?

4 个答案:

答案 0 :(得分:28)

这些是Grunt的 globbing patterns ,受 node-glob minimatch 库的支持。

基本上:

  • *匹配任意数量的字符,但不是 /
  • **匹配任意数量的字符包括 /,只要它是路径部分中的唯一内容
  • {}允许以逗号分隔的&#34;或&#34;表达式

因此,styles/{,*/}*.less匹配以下文件:

  • styles目录
  • 中的LESS文件
  • styles目录的直接子目录中的LESS文件(但没有更深)

答案 1 :(得分:14)

此模式在yeoman模板中广泛使用:它意味着只查看文件夹层次结构中的一个级别。它主要用于性能原因,因为同时观看太多文件可能很慢(甚至不可能)。

答案 2 :(得分:11)

我相信你在那里使用minimatch pattern

双星号是一个导致递归到子目录的glob。

单个星号仅匹配当前目录中的0个或多个字符(它匹配除斜杠字符以外的每个字符)。

例如,/ ** / d将匹配a / b / c / d。

答案 3 :(得分:1)

答案是globbing-patterns

其他答案已经回答了{,*/}*的含义。

**/{,*/}*之间的差异是文件夹深度

  • /styles/{,*/}*.less已分为两种情况

    1. /styles/*.less
    2. /styles/*/*.less

例如

/styles/{,*/}*.less将匹配/styles/x.less(情况1)

/styles/{,*/}*.less也会匹配/styles/test/x.less(情况2)

/styles/{,*/}*.less无法匹配/styles/test/test1/x.less

但是/styles/**/*.less可以做到这一点