【问题标题】:gulp globbing- how to watch everything below directorygulp globbing - 如何查看目录下的所有内容
【发布时间】:2014-03-08 12:00:11
【问题描述】:

这是一个非常愚蠢的问题,但我还没有真正找到满意的答案:How do I use gulp globbing to select all files in all某个目录下的子目录?

我试过了:

'./src/less' './src/less/' './src/less/*'

它们似乎都不起作用。

【问题讨论】:

    标签: glob gulp


    【解决方案1】:

    './src/less/**' 似乎有效。不过,如果有人有更明确的所有通配命令列表,我很乐意接受您的回答并将其添加到 gulp 文档中。现在,您必须访问 gulp 的其中一个子模块的文档,然后它会为您提供手册页列表。最好有直接参考,尤其是对于使用 gulp 的设计师。

    【讨论】:

    • gulp.watch('./build/**', ...) 似乎(错误?)触发了 parent 目录(例如 ./.git/)中的一些更改。在末尾添加额外的 /* 似乎可以避免这个问题:gulp.watch('./build/**/*', ...).
    • @medmunds 我发现了类似的结果。 glob 必须以 * 或特定的 *.less 结尾。 *.* 将不起作用,因为它会丢失任何没有扩展名的内容。它似乎采用了 . 并使用 POSIX 样式匹配进行匹配;这意味着如果文件中没有“句点”,它将不匹配。也许应该是 . 的特殊情况,因为 Windows 上通过 DIR 的 . 匹配“许可”,但不幸的是 ln *.* 不匹配。 '.' 有两种不同的含义。 * 似乎可以满足我们的需要。在我看来,. glob 可能永远不是开发人员真正想要的,可能需要抛出警告。
    • @filthy_wizard - ** 是递归的。
    • 除非存在错误,否则** 不应捕获预期目录子树之外的任何内容。唯一的区别是**/* 不包括基本目录本身。
    【解决方案2】:

    所有目录下所有文件的模式通常是./src/less/**/*.*./src/less/**/*,应该都可以。

    一般来说,最好匹配特定的文件扩展名——即使它们都应该相同——以防止抓取系统文件或其他垃圾。在这种情况下,您可以对 .less 文件执行 ./src/less/**/*.less,或者对 .less.css 文件执行类似 .src/less/**/*.{less,css} 的操作。

    The Grunt website 对大多数 minimatch glob 都有很好的参考。 (Grunt 和 gulp 都使用 minimatch,因为它是几乎所有与 Node 相关的 glob 库。)

    gulp 或 minimatch 拥有自己的完整文档会很好,但这对你来说是开源的。

    【讨论】:

    • 我会查看 Grunt 网站,谢谢。关于系统文件的观点绝对是有道理的。我希望它稍微宽松一点的原因是因为我将它用于手表。
    • 如果您还没有,我强烈建议您学习并使用gulp-watch 模块来观看文件,因为它也可以处理观看新文件。 IMO 需要做更多的设置工作,但值得。
    • 为了将来参考,我在globtester.com 使用了一个工具,它使用minimatch,gulp 通过node-glob 使用它。 “glob 指的是 node-glob 语法,也可以是直接文件路径。” (来源:github.com/gulpjs/gulp/blob/master/docs/API.md)“[node-glob] 使用 minimatch 库进行匹配。”​​(来源:github.com/isaacs/node-glob
    猜你喜欢
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 2018-04-13
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多