gulp globbing - 如何查看目录下的所有内容

Posted

技术标签:

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

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

我试过了:

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

它们似乎都不起作用。

【问题讨论】:

【参考方案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)

以上是关于gulp globbing - 如何查看目录下的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

gulp中glob的匹配规则

gulp基础操作实践

glob模式

Gulp globs匹配规则

glob匹配,排除所有JS文件

精通gulp的关键:文件路径匹配模式glob