Stream 如何从对象在一次吞咽任务中执行多个动态流

Stream 如何从对象在一次吞咽任务中执行多个动态流,stream,gulp,Stream,Gulp,我正在尝试基于json对象动态复制gulp文件中的文件。 我尝试使用合并流包,但没有成功 const DEV_PATH = "./dev/"; const DIST_PATH = "./dist/"; const DEV_PATH_TOOLS = DEV_PATH + "tools/"; const DEV_PATH_COMMON = DEV_PATH + "common/"; const DIST_PATH_TOO

我正在尝试基于json对象动态复制gulp文件中的文件。 我尝试使用
合并流
包,但没有成功

const DEV_PATH = "./dev/";
const DIST_PATH = "./dist/";
const DEV_PATH_TOOLS = DEV_PATH + "tools/";
const DEV_PATH_COMMON = DEV_PATH + "common/";
const DIST_PATH_TOOLS = DIST_PATH + "tools/";
const TOOLS_DIST_PATH = [
    {
        "dir" : 'dir1',
        "options"  : {
            "class" : [ "modules/csv/**/*" ]
        }
    },
    {
        "dir" : 'dir2',
        "options"  : {
            "class" : [ "modules/csv/CsvImporter.php" ]
        }
    }
]; 

const gulp = require('gulp');
const plumber = require('gulp-plumber');
const merged = require('merge-stream')(); 

gulp.task( 'copy-class', function(){
    TOOLS_DIST_PATH.map( t => function () {
        var stream = new stream(
            gulp.src( t.options.class.map( c =>  DEV_PATH_COMMON + c ))
                .pipe(plumber({
                    handleError: function (err) {
                        console.log(err);
                        this.emit('end');
                    }
                }))
                .pipe( gulp.dest( DIST_PATH_TOOLS + t.dir + '/class' ) )
                .pipe(plumber({
                    handleError: function (err) {
                        console.log(err);
                        this.emit('end');
                    }
                }))
        );
        merged.add(stream);
    });
    return merged.isEmpty() ? null : merged;
});

gulp.task( 'default', gulp.series( 'copy-class' ) );
我得到了这个错误:

以下任务未完成:默认值,复制类

您忘记发出异步完成的信号了吗

我很困惑,有人能帮我吗?

我找到了一个

Const DEV_PATH = "./dev/";
const DIST_PATH = "./dist/";
const DEV_PATH_TOOLS = DEV_PATH + "tools/";
const DEV_PATH_COMMON = DEV_PATH + "common/";
const DIST_PATH_TOOLS = DIST_PATH + "tools/";
const TOOLS_DIST_PATH = [
    {
        "dir" : 'dir1',
        "options"  : {
            "class" : [ "modules/csv/**/*" ]
        }
    },
    {
        "dir" : 'dir2',
        "options"  : {
            "class" : [ "modules/csv/CsvImporter.php" ]
        }
    }
]; 

const gulp = require('gulp');
const plumber = require('gulp-plumber');
const merge= require('merge-stream'); 

function compileScripts(t) {
    const classStream = gulp.src( t.options.class.map( c =>  DEV_PATH_COMMON + c ))
        .pipe(plumber({
            handleError: function (err) {
                console.log(err);
                this.emit('end');
            }
        }))
        .pipe( gulp.dest( DIST_PATH_TOOLS + t.dir + '/class' ) )
        .pipe(plumber({
            handleError: function (err) {
                console.log(err);
                this.emit('end');
            }
        }))
    /* TODO : when there wil be several options
    return merge(classStream , otherStream );*/

    return classStream;
}

gulp.task( 'copy-options', function(){
    var streams = TOOLS_DIST_PATH.map( t => {
        return compileScripts(t);
    });
    return merge(streams);
});

gulp.task( 'default', gulp.series( 'copy-options' ) );