【问题标题】:What is the ** glob character?** 全局字符是什么?
【发布时间】:2015-12-12 19:22:33
【问题描述】:

我的 react gulpfile 中有这个路径:

var path = {
  HTML: 'src/index.html',
  ALL: ['src/js/*.js', 'src/js/**/*.js', 'src/index.html'],
  JS: ['src/js/*.js', 'src/js/**/*.js'],
  MINIFIED_OUT: 'build.min.js',
  DEST_SRC: 'dist/src',
  DEST_BUILD: 'dist/build',
  DEST: 'dist'
};

什么是双球字符?

我知道single glob 是什么...但是double 是什么? single glob

【问题讨论】:

    标签: gulp glob


    【解决方案1】:

    ** 匹配任何字符包括正斜杠 /
    * 匹配任何字符除了正斜杠(仅匹配文件或目录名)

    【讨论】:

    【解决方案2】:

    它与单个星号几乎相同,但可能由多个目录级别组成。

    换句话说,/x/*/y 将匹配以下条目:

    /x/a/y
    /x/b/y
    

    以此类推(通配符部分只有一个目录级别),双星号/x/**/y匹配如下内容:

    /x/any/number/of/levels/y
    

    “任意数量的级别”的概念也包括零(换句话说,/x/**/y 将匹配 /x/y 作为其选择之一)。


    顺便说一句,尽管我讨厌将 任何东西都归功于大型机, 我相信这自 MVS 早期以来就已被用于允许在多个级别选择数据集 :-)

    【讨论】:

    • 这毫无意义。如果 * 表示 0 个或更多字符,则该模式可能匹配 /x//y,这是无意义的。您真正要说的是“任意数量的字符,后跟任意数量的字符”。这不就是……哦,我不知道……任意数量的字符???
    • @AleksandrH,不,这不是正常意义上的正则表达式:没有匹配 字符, 只有目录名称。这专门用于分层文件系统。第一点,如果允许空目录名,/x//y 将完全有效。但是,我从未见过允许这样做的文件系统。关于第二点,* 表示匹配“任何目录名称,仅一级”(因此不会超出下一个 / 分隔符),而 ** 表示“匹配 任意数量的级别在每个级别具有任意目录名称”(可以根据需要跨越任意数量的/ 分隔符)。
    • 值得注意的是/x/**/y//x/y/也包括在内,很整洁。
    • @YassineImounachen 是的。还有更多不明显的细微差别。对于视觉上的倾斜,请参阅stackoverflow.com/a/66744400/8910547
    【解决方案3】:

    像 Grunt 一样,双 ** 表示,“查看所有子文件夹 在 js 中和所有 .js 文件中。”

    您实际上可以在这里参考:

    https://www.codefellows.org/blog/quick-intro-to-gulp-js

    【讨论】:

      【解决方案4】:

      它通常用于表示任意数量的子目录。所以

      src/js/**/*.js
      

      会匹配

      src/js/files/*.js
      src/js/more-files/*.js
      
      etc
      etc
      

      【讨论】:

      • 单个星号也可以匹配您的示例。我认为您打算在第二个示例中包含一个额外的子目录。
      • @SimonEast 喜欢这样吗? src/js/files/controllers/user.js, src/js/files/models/foo/var.js
      猜你喜欢
      • 2013-02-07
      • 2015-11-01
      • 1970-01-01
      • 2013-01-15
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 2010-10-16
      相关资源
      最近更新 更多