17

Gruntfile.js中,我有:

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

对于路径,究竟{,*/}意味着什么?使用双星号有什么不同**/

4

4 回答 4

28

这些是Grunt 的globbing 模式,由node-globminimatch库支持。

基本上:

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

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

  • styles目录中的 LESS 文件
  • 目录的直接子目录中的LESS 文件styles(但没有更深)
于 2014-03-19T07:36:00.147 回答
14

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

于 2013-10-21T09:10:42.303 回答
11

我相信您在那里使用的是minimatch 模式

双星号是一个导致递归到子目录的全局变量。

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

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

于 2013-10-21T04:05:58.367 回答
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能做到

于 2017-08-16T07:39:33.527 回答