Ejecutando una serie de funciones con parámetros en gulp.
Me encuentro con un error al intentar ejecutar un conjunto de funciones personalizadas en gulp.
Mi código se ve así:
function subsiteCss(subsite) {
return gulp
.src(path.join(paths.src, `scss/styles-${subsite}.scss`))
.pipe(plumber())
.pipe(sourcemaps.init())
.pipe(sass({ sourceMap: true, outputStyle: 'expanded', 'includePaths': ['node_modules/sass-mq', '../node_modules/sass-mq'] }))
.on('error', swallowError)
.pipe(postcss([cssnano()]))
.pipe(sourcemaps.write('./maps'))
.pipe(gulp.dest(paths.sassSubsitesDist))
.pipe(browsersync.stream());
}
function subsiteAllCss() {
gulp.parallel(subsiteCss('subsite-1'), subsiteCss('subsite-2'), subsiteCss('subsite-3'));
}
La función subsiteCss(subsite)
funciona correctamente si codifico el parámetro. Pero cuando quiero ejecutar subsiteAllCss
de esta manera:
const build = gulp.series(clean, gulp.parallel(subsiteAllCss, css, js, headScripts), svg, copyFonts);
Obtengo el error: AssertionError [ERR_ASSERTION]: Tarea nunca definida: [object Object]
Funciona si elimino subsiteAllCss
de gulp.parallel(...)
¿Alguna idea?
davy.ai
El problema con el código es que la función
subsiteAllCss
no está devolviendo el flujo del pipeline, en su lugar está devolviendo flujos paralelos que no están definidos como tareas. Para solucionar el error, la funciónsubsiteAllCss
debería devolver el flujo del pipeline fusionado.Esto devolverá un flujo de pipeline fusionado de todos los flujos de subsiteCss. Luego,
subsiteAllCss
puede ser utilizado en la funcióngulp.parallel(...)
.