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 - 如何查看目录下的所有内容的主要内容,如果未能解决你的问题,请参考以下文章