gulp.watch no ejecuta tareas en orden

Objetivo

Cree una tarea gulp.watch para ejecutar otras tareas en un orden específico

¿Por qué esto no es un duplicado?

Muchas personas me han sugerido que eché un vistazo a Cómo ejecutar las tareas de Gulp de forma secuencial una tras otra . Sin embargo, esta pregunta se centra en gulp.task mientras que mi pregunta se centra en gulp.watch .

La solución que estoy buscando es una forma de usar gulp.watch para lograr el efecto sincrónico que busco. Sin embargo, si esto no es posible, recurriré a gulp.task .

Fondo

Tengo un pequeño proyecto, tengo algunos archivos de prueba, así como el plugin gulp gulp-complexity complexult. Deseo ejecutar los archivos de prueba primero, y luego ejecutar el complemento de gulp-complexity cada vez que se cambia un archivo JavaScript.

Lo que he intentado

Leí la documentación y vi los siguientes tutoriales:

  • https://github.com/gulpjs/gulp/blob/master/docs/API.md
  • https://www.smashingmagazine.com/2014/06/building-with-gulp/

Eran muy buenos, pero aún no entiendo cómo puedo tener una tarea gulp.watch que ejecuta las tareas de forma síncrona (en un orden específico) en lugar de ejecutarlas de forma asíncrona.

Código

Esto es lo que tengo hasta ahora:

 var gulp = require("gulp"); var mocha = require("gulp-mocha"); var complexity = require("gulp-complexity"); gulp.task("test", function(){ gulp .src("./test.js") .pipe(mocha()) .on("error", function(){ this.emit("end"); }); }); gulp.task("complexity", ["test"], function(){ gulp.src('*.js').pipe(complexity()); }); gulp.task("watch", function(){ gulp.watch("./*.js", ["test", "complexity"]); }); 

¿Qué estoy haciendo mal aquí?

Por favor, recuerde que todavía soy muy nuevo para tragar (¡comencé a aprenderlo hoy!) Así que cualquier explicación sobre mi problema sería bienvenida.

Este es un problema de Gulp y debe solucionarse en Gulp 4.0

Por ahora, pruebe run-sequence [ https://www.npmjs.com/package/run-sequence ]

Aquí hay una solución: https://stackoverflow.com/a/22826429/2832584 Además, parece que duplica la pregunta en el enlace de arriba