【问题标题】:gulp.src() include files but ignore all foldersgulp.src() 包含文件但忽略所有文件夹
【发布时间】:2015-12-25 21:13:48
【问题描述】:

肯定有这么简单的答案,我找不到以前问过的人:

什么通配模式包含文件夹中的所有文件但忽略所有子文件夹?

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

【问题讨论】:

    标签: gulp glob node-glob


    【解决方案1】:

    当您调用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)。

    【讨论】:

    • 这是一个很好的答案,所以我投了赞成票。我将第一个标记为已接受的答案,因为此解决方案需要第二个源流。我试图为我的所有源文件创建一个流。
    • 我不明白您所说的“需要第二个源流”是什么意思。如果您想要foo 中的所有文件而不是目录,您可以使用gulp.src("foo/**", { nodir: true })。这是它。一个来源。
    • 对不起,@Louis,我的意思是我正在使用文件通配符复制其他文件夹和子文件夹中的许多其他文件。只有在这个文件夹中,我不想要子文件夹。使用 nodir 选项将排除所有文件夹 AFAIK,因此需要第二个流。
    • 你当然是对的,我确实必须在根目录过滤掉一个 .svn 文件夹,但无论如何我都必须为其他文件夹这样做。我承认直到我发布问题后我才知道 es,但我现在经常使用它。在这种情况下,另一种解决方案仍然更适合我,但我再次为您更新的解决方案的优雅点赞。肯定会帮助别人。
    【解决方案2】:

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

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

    【讨论】:

    • 正如 Louis 指出的那样,我可以确认,这将包括 .svn 等隐藏文件夹,这些文件夹必须经过专门过滤。如果您不介意多个流并且您不知道您可能拥有哪些隐藏文件夹,那么他的解决方案会更好。
    • 同意。这也不会捕获没有扩展名的文件,例如 GitHub 生成的“LICENSE”文件(如果你出于某种原因想要复制它)。
    【解决方案3】:

    你可以试试

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

    但是这不会匹配点文件。

    【讨论】:

    • 是的,这也是我能想到的。
    猜你喜欢
    • 2021-03-15
    • 1970-01-01
    • 2017-01-08
    • 2018-08-31
    • 2020-03-14
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 2010-11-01
    相关资源
    最近更新 更多