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


108

这是一个非常愚蠢的问题,但是我还没有真正找到满意的答案:如何使用gulp globbing选择某个目录下所有子目录中的所有文件?

我试过了:

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

他们似乎都不起作用。

Answers:


178

所有目录下所有文件的模式通常为./src/less/**/*.*./src/less/**/*,都应该起作用。

一般来说,最好匹配特定的文件扩展名(即使它们都应该相同),以防止获取系统文件或其他垃圾。在这种情况下,您可以./src/less/**/*.less只处理.less文件,也.src/less/**/*.{less,css}可以处理.less.css文件。

Grunt网站为大多数minimatch glob提供了很好的参考。(Grunt和gulp都使用minimatch,因为它是与Node相关的几乎所有内容的glob库。)

gulp或minimatch拥有自己完整的文档将很不错,但这对您来说是开源的。


我会查看Grunt网站,谢谢。关于系统文件的观点绝对有道理。我之所以希望它宽松一点是因为我正在将其用于手表。
Jehan 2014年

1
如果您还没有,我强烈建议您学习并使用该gulp-watch模块来监视文件,因为它也可以处理新文件的监视。设置还有很多工作要做,但值得的是,IMO。
OverZealous 2014年

8
为了将来参考,我在globtester.com使用了一个工具,它使用了minimatch,gulp通过node-glob使用了minimatch。“ glob指的是node-glob语法,也可以是直接文件路径。” (来源:github.com/gulpjs/gulp/blob/master/docs/API.md)“ [node-glob]使用minimatch库进行匹配。”​​(来源:github.com/isaacs/node-glob
Daniel Dropik

1

'./src/less/**'似乎有效。不过,如果有人对所有通配符命令有更明确的列表,我很乐意接受您的答案并将其添加到gulp文档中。现在,您必须转到gulp子模块之一的文档,然后为您提供联机帮助页列表。可以直接参考,尤其对于使用gulp的设计师。


1
gulp.watch('./build/**', ...)似乎(错误)触发了目录中的某些更改 (例如./.git/)。最后添加额外的/ *似乎可以避免该问题:gulp.watch('./build/**/*', ...)
medmunds's

@medmunds我发现了类似的结果。球形必须以*或特定的* .less结尾。*。*将不起作用,因为它在没有扩展名的情况下会丢失任何内容。它似乎采取了并使用POSIX样式匹配进行匹配;意思是如果文件中没有“句点”,它将不匹配。也许应该有一种特殊情况作为通过Windows上的DIR匹配“许可证”,但不幸的ln *.*是没有。'的两种不同含义' 悲伤。*似乎可以满足我们的需求。一在我看来,glob可能永远不是开发人员真正想要的,它可能需要发出警告。
Andrew T Finnell

@filthy_wizard- **是递归的。
史蒂文·文蒂米利亚
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.