UNPKG

gulp-series

Version:

Gulp non-dependent ordered tasks runner. It solves the issue with the run-sequence module that doesn't abort the task chain on error.

49 lines (37 loc) 1.06 kB
// gulp-series var gulp = require("gulp"); module.exports = new function() { var self = this; this.tasks = {}; function getSeriesTaskName(index, seriesOrName) { return index+"."+(Array.isArray(seriesOrName) ? seriesOrName[index] : seriesOrName); } function runSeriesTask(series) { var tasks = self.tasks; series.forEach(function(t) { if(!tasks.hasOwnProperty(t)) throw "task " + t + " is not registered"; }); return function() { if(!series.length) throw "no series provided"; series.forEach(function(t, i) { if(i === 0) gulp.task(getSeriesTaskName(i, t), tasks[t]); else gulp.task(getSeriesTaskName(i, t), [getSeriesTaskName(i - 1, series)], tasks[t]); }); return gulp.start(getSeriesTaskName(series.length - 1, series)); }; } this.registerTasks = function(tasks) { for(var n in tasks) { if(!tasks.hasOwnProperty(n)) continue; gulp.task(n, tasks[n]); } self.tasks = tasks; }; this.registerSeries = function(name, series) { gulp.task(name, runSeriesTask(series)); }; };