У меня есть много задач, настроенных так:
export const themingLess = () => { return lessCompile(config.sources.themingLess); };
Вспомогательные функции следующие:
/* Helper functions */
const cleanModule = (dest) => {
const f = dest.substring(0, dest.indexOf('.'));
log(c.green('Cleaning files related to ' + f));
return del(config.compilePath + '/' + f + '*', { force: true });
};
const lessCompile = (conf) => {
cleanModule(conf.dest);
return gulp.src(conf.src)
.pipe(sourcemaps.init())
.pipe(less())
.pipe(concat(conf.dest))
.pipe(cleanCss())
.pipe(rev())
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(config.compilePath))
.on('data', (e) => { fs.writeFileSync(config.compilePath + '/' + conf.dest + '.html', e.sourceMap.file); })
.on('end', () => {
log(c.green(conf.dest + ' done'));
});
};
Затем я создаю основную задачу для запуска всего параллельно:
const taskMain = gulp.parallel(themingLess,themingJs,widgetsCommonJs,widgetsModules,widgetsVideoscripts,widgetsFormscripts,widgetsPageedit,widgetsCore);
Я полностью сбит с толку относительно того, что такое операции асинхронности и синхронизации в gulp, поэтому я ищу помощь в том, как это должно быть написано.
edit: я использую gulp 4 и компилятор ESM