【问题标题】:What does this wildcard mean?这个通配符是什么意思?
【发布时间】:2019-03-10 21:19:14
【问题描述】:

我有一个包含多个命令的 grunt 文件。其中一部分是由一位离开的同事写的,但我们找不到确切的解释。

它做了它应该做的事,但知道究竟是什么,是我们不知道的:)

这是代码:

dist: {
    files: [{
        expand: true,
        cwd: '<%= config.tmp %>/styles/',
        src: '{,**/}*.css',
        dest: '<%= config.tmp %>/styles/'
    }]
}

我们不确定的部分是第 5 行的{,**/}

【问题讨论】:

  • 我觉得要么在当前目录,要么在父目录

标签: css json gruntjs wildcard


【解决方案1】:

来自the documentation

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

因此,

'{,**/}*.css',

将匹配 *.css**/*.css

大括号内的第一个模式是冗余,因为第二个模式应该已经匹配当前/根目录中的 .css 文件。

【讨论】:

  • 我同意...我是从文档中得到的...但是逗号让我们感到困惑,因为它通常用于分隔某些内容,但不是在这里。
【解决方案2】:

{,**/}*.css 该模式内的花括号表示称为大括号扩展的功能。支持该功能的内部 grunt is using Minimatch 库。在您的情况下,其中的逗号分隔模式列表将首先扩展为两个模式 *.css**/*.css。您可以使用globster.xyz 测试您的模式

【讨论】:

    【解决方案3】:

    sotirios-delimanolis 的精彩回答:

    When to use ** (double star) in glob syntax within JAVA

    简而言之,如果您使用一颗星,那么嵌套路径将被忽略:

    /a/a/a.css - 忽略

    花括号里面的逗号就是这样,所以里面有逗号的文件/目录不会被忽略:

    dsadsad,dasdsadas/a.css

    【讨论】:

      猜你喜欢
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 2016-03-07
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      相关资源
      最近更新 更多