Node.js Gulp src / dest 4.0行为与Gulp 3.6

时间:2019-03-19 17:17:44

标签: node.js gulp

我的问题的快速摘要:

Gulp 3.6.0 dest()是否以与4.0.0相同的方式处理基于glob的内容?

function other() {
    return src([
        path.join("src/**/*"),
        path.join("!src/**/*.{html,css,js,scss}")
    ])
    .pipe(fileFilter)
    .pipe(dest(dist));
}

使用上面的代码运行Gulp 3.6.0会产生以下结果:

enter image description here

请注意,通过此代码添加到dist文件夹中的有问题的文件夹和文件为:

-app
-assets
-config
favicon.ico

现在在4.0.0中运行相同的代码会产生以下结果:

enter image description here

我知道glob-base通过管道默认添加到目标,但是这种行为与gulp在3.6.0中如何将源镜像到dest文件目录结构不同吗?该示例将提出其他建议。

如果任何人都可以为我提供一种解决方案,以产生与我的3.6.0结果中提供的文件夹结构相同的解决方案,那就太好了。我已经尝试过gulp-flatten和gulp-rename,但是什么都没有产生只删除glob-base的理想结果。

1 个答案:

答案 0 :(得分:0)

因此,我仍然不确定升级到Gulp 4.0与处理glob-parent / glob-base的关系到底有什么意义,但是我设法使用base选项获得了所需的内容。

此选项有效地使路径中/ ** /之前的其他 src 硬编码路径引用无效。

function other() {

var fileFilter = plugins.filter(function(file) {
    return file.stat.isFile();
});

var appFilter = plugins.filter(function(file) {
    return file.path.indexOf("\\src\\app\\") === -1;
});

return src(path.join(conf.paths.src, "/**/*"), { base: conf.paths.src })
    .pipe(appFilter)
    .pipe(fileFilter)
    .pipe(dest(conf.paths.dist));
}