Estoy usando Gulp en una canalización de azuree DevOps. La tarea es agrupar algunos archivos CSS usando gulp-concat y luego publicar el artefacto.
Una tarea ejecuta Gulp usando esto...
const gulp = require("gulp"),
concat = require("gulp-concat"),
fs = require("gulp-fs");
function doBundle(callback) {
var result = gulp.src([
...
])
.pipe(concat("bundle.css"))
.pipe(gulp.dest("./Content/"));
console.info(fs.existsSync("./Content/bundle.css"));
return result;
}
gulp.task("default", gulp.series(doBundle));
La tarea subsiguiente en la canalización publica el artefacto que se encuentra en ./Content/bundle.css , pero falla y dice que no existe dicho archivo.
Es cierto, al mirar la consola puedo ver que la línea...
console.info(fs.existsSync("./Content/bundle.css"));
... está devolviendo false . Sin embargo, si introduzco un retraso cambiando esa línea a...
setTimeout(() => {
console.info(fs.existsSync("./Content/bundle.css"));
},
2000);
... entonces devuelve true .
Mi suposición es, por lo tanto, que la canalización devops se está moviendo a la siguiente tarea antes de que se complete la tarea Gulp. Si esto es correcto, ¿cuál es la mejor práctica aquí?
¿Cómo puedo asegurarme de que la canalización de Gulp se haya completado antes de la siguiente tarea en la canalización de azuree DevOps?