1

我最近升级到 gulp 4,我正在尝试解决我的导出过程中长期存在的问题。

简而言之,我的项目中有 3 个(或更多)独立文件夹。独立我的意思是他们每个人都有自己的 bundle.js 和 global.css 文件。我target在我的 gulpfile 中设置了一个变量,用于创建 gulp 需要的所有路径target

在当前情况下,当我想导出整个项目时,我需要手动更改targetgulpfile 中的变量,然后运行export任务。

我需要像下面这样工作的东西(因为other_folders数组可以改变)

/*----------  Exports current target  ----------*/
gulp.task('export', gulp.series(to_prod,'export_files', 'export_scripts_and_styles', 'export_fonts', 'export_core'));

/*----------  Exports all targets  ----------*/
gulp.task('export_all', function(done){
    var needs_exporting = other_folders.concat("website");

    needs_exporting.forEach(function(export_this){
        target = export_this;
        set_paths();

        // Here it needs to fire the generic export task
        gulp.series('export');
    });

    done();
});

问题是我似乎找不到在forEach循环中调用 gulp 任务的方法。有没有办法做到这一点,或者我需要一个解决方法?

4

1 回答 1

1

调用gulp.series('export')不会立即启动export任务。它只是返回一个您必须调用才能启动export任务的函数。

但是调用返回的函数也不会export立即启动任务。该函数是异步的。直到后来,export任务才真正开始。

为系列中的每个元素运行异步函数的最简单方法是使用包eachSeries()提供的函数async

var async = require('async');

gulp.task('export_all', function(done){
    var needs_exporting = other_folders.concat("website");

    async.eachSeries(needs_exporting, function(export_this, cb) {
        target = export_this;
        set_paths();

        gulp.series('export')(cb);
    }, done);
});
于 2016-10-23T08:40:22.920 回答