我有很多这样配置的任务:
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中的异步操作和同步操作完全感到困惑,因此我正在寻求有关如何编写此操作的帮助。
编辑:我正在使用gulp 4和ESM编译器