@v4fire/core
Version:
V4Fire core library
50 lines • 1.17 kB
JavaScript
;
let gulpInitialized;
exports.wrapGulp = function wrapGulp(gulp) {
const addTask = gulp.task.bind(gulp),
series = gulp.series.bind(gulp),
parallel = gulp.parallel.bind(gulp),
cache = new Map();
gulp.task = (name, tasks) => {
if (gulpInitialized) {
return addTask(name, tasks);
}
cache.set(name.name || name, tasks || name);
};
function apply(tasks) {
if (Object.isArray(tasks)) {
return tasks.map(tasks => apply(tasks));
}
if (Object.isDictionary(tasks)) {
return tasks.init();
}
return tasks;
}
gulp.series = tasks => {
if (gulpInitialized) {
return series(tasks);
}
return {
type: 'series',
init: () => series(apply(tasks))
};
};
gulp.parallel = tasks => {
if (gulpInitialized) {
return parallel(tasks);
}
return {
type: 'parallel',
init: () => parallel(apply(tasks))
};
};
gulp.init = () => {
if (gulpInitialized) {
return;
}
gulpInitialized = true;
Object.forEach(cache, (tasks, name) => {
addTask(name, typeof tasks === 'function' ? tasks : tasks.init());
});
};
};