gulp.src() 包含文件但忽略所有文件夹

gulp.src() include files but ignore all folders

肯定有一个如此简单的答案,我找不到以前问过的人:

什么 globbing 模式可以包含文件夹中的所有文件但忽略所有子文件夹?

gulp.src('*') 包括所有文件和文件夹。我只想要文件,不想单独排除文件夹。

你可以试试

gulp.src('folder/*.*')

但是,这不会匹配点文件。

如果您还想包含 .dotFiles,请尝试

gulp.src(['folder/*.*', 'folder/.*'])

调用 gulp.src 时只需使用 nodir 选项。这实际上将 测试 从文件系统读取的文件,而不是依赖今天可能存在但明天不会存在的约定。

在下面的示例中,dir 目标中的 debug() 将输出文件和目录。 nodir 目标中的 debug() 将仅输出文件,因为它使用 nodir。使用文件和子目录填充目录 foo,您将看到不同之处。

var gulp = require("gulp");
var debug = require("gulp-debug");

gulp.task("dir", function () {
    return gulp.src("foo/**")
        .pipe(debug());
});

gulp.task("nodir", function () {
    return gulp.src("foo/**", { nodir: true })
        .pipe(debug());
});

如果你想让树的一部分包含目录而另一部分排除它们,那么你可以合并流:

var es = require("event-stream");
gulp.task("nodir-multi", function () {
    return es.merge(gulp.src("foo/**", { nodir: true }),
                    gulp.src("bar/**"))
        .pipe(debug());
});

我认为只有一个 gulp.src 调用的便利性不能证明依靠 *.*.* 来排除目录是合理的。版本控制系统通常会创建匹配 .* 的目录(例如 .git.svn)。开发工具也做同样的事情(例如 .deps.tmp.foo)。