如何在 gulp 4 中从另一个任务重复启动一个任务
How to repeatedly launch a task from another task in gulp 4
我最近升级到 gulp 4,我正在尝试解决我的导出过程中长期存在的问题。
简而言之,我的项目中有 3 个(或更多)独立文件夹。我所说的独立是指他们每个人都有 自己的 bundle.js 和 global.css 文件 。我在我的 gulp 文件中设置了一个 target
变量,用于创建 gulp 所需的所有路径 target
.
在当前情况下,当我想要导出整个项目时,我需要手动更改 gulp 文件中的 target
变量,然后 运行 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 任务的方法。有没有办法做到这一点,或者我需要解决方法吗?
调用 gulp.series('export')
不会立即启动 export
任务。它只是 returns 您必须调用才能启动 export
任务的函数。
然而,调用返回的函数也不会立即启动 export
任务。该函数是异步的。只是稍后 export
任务才真正开始。
为系列集合的每个元素运行异步函数的最简单方法是使用eachSeries()
function that's provided by the 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);
});
我最近升级到 gulp 4,我正在尝试解决我的导出过程中长期存在的问题。
简而言之,我的项目中有 3 个(或更多)独立文件夹。我所说的独立是指他们每个人都有 自己的 bundle.js 和 global.css 文件 。我在我的 gulp 文件中设置了一个 target
变量,用于创建 gulp 所需的所有路径 target
.
在当前情况下,当我想要导出整个项目时,我需要手动更改 gulp 文件中的 target
变量,然后 运行 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 任务的方法。有没有办法做到这一点,或者我需要解决方法吗?
调用 gulp.series('export')
不会立即启动 export
任务。它只是 returns 您必须调用才能启动 export
任务的函数。
然而,调用返回的函数也不会立即启动 export
任务。该函数是异步的。只是稍后 export
任务才真正开始。
为系列集合的每个元素运行异步函数的最简单方法是使用eachSeries()
function that's provided by the 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);
});