Aquí hay una tarea compuesta que no sé cómo reemplazarla con dependencias de tareas.
...
gulp.task('watch', function () {
var server = function(){
gulp.run('jasmine');
gulp.run('embed');
};
var client = function(){
gulp.run('scripts');
gulp.run('styles');
gulp.run('copy');
gulp.run('lint');
};
gulp.watch('app/*.js', server);
gulp.watch('spec/nodejs/*.js', server);
gulp.watch('app/backend/*.js', server);
gulp.watch('src/admin/*.js', client);
gulp.watch('src/admin/*.css', client);
gulp.watch('src/geojson-index.json', function(){
gulp.run('copygeojson');
});
});
El registro de cambios correspondiente https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md#35 [desaprobar gulp.run]
javascript
gulp
toutpt
fuente
fuente
scripts
, pero también tiene sentido forzar la ejecución de esta tarea de inmediato (sin esperar hasta que cambie algún archivo de script).gulp.task('default', ['build', 'watch']);
, que primero se compila y luego comienza a mirar.O puedes hacer esto:
fuente
.start
es un método de orquestador. Dado que Gulp hereda de eso, debería funcionar. Estoy activando una tarea de tragar desde una función que no es de tragar (watchify) y parece que funciona.gulp.start
se eliminará en la próxima versión: github.com/gulpjs/gulp/issues/505#issuecomment-45379280gulp-start
se pueden reemplazar conrun-sequence
npmjs.com/package/run-sequencefuente: https://github.com/gulpjs/gulp/issues/755
gulp.start()
nunca tuvo la intención de ser una API pública ni se usó. Y como se indicó anteriormente en los comentarios, la administración de tareas se reemplazará en la próxima versión ... porgulp.start()
lo que se romperá.La verdadera intención del diseño de gulp es crear funciones regulares de Javascript y solo realizar la tarea de llamarlas.
Ejemplo:
fuente
Perdóname por resucitar una vieja pregunta. La respuesta aceptada no aborda el problema de ejecutar tareas antes de configurar los relojes. La siguiente respuesta usa gulp.start, que desaparece. La tercera respuesta señala que se deben usar funciones regulares, pero el ejemplo parece extraño. Hice algunas búsquedas pero no encontré un ejemplo simple.
Aquí está mi solución. La idea es definir funciones js regulares y luego registrarlas como tareas. Las funciones se pueden llamar directamente si es necesario o desde dentro de un reloj.
Soy nuevo en tragar. Por favor, avíseme si he pasado por alto algo obvio.
fuente
gulp.watch
tareas definidaswatchTask()
antes de quebuildTask()
se confirme que está completo? Siento que esto sigue siendo una condición de carrera y no garantiza la construcción antes de la visualización.trago 4
¡Me gusta gulp4!
fuente
Como @dman menciona eso,
gulp.start
será descartado en la próxima versión. También se puede ver en este número de gulp .Y en los comentarios de la respuesta de @Pavel Evstigneev, @joemaller menciona que podemos usar run-sequence en este escenario.
Pero tenga en cuenta que, el autor de run-sequence dice:
Entonces, antes de gulp 4.0, podemos usar run-sequence , después de 4.0, simplemente podemos usar gulp.
fuente
Si necesita mantener el orden de las tareas en ejecución, puede definir las dependencias como se describe aquí ; solo necesita devolver el flujo de la dependencia:
Defina la tarea que depende de ella:
Y úsalo desde el reloj:
Ahora la
dependecy
tarea se completará antes dedepends
ejecutarse (por ejemplo, sus tareas 'jazmín' e 'incrustación' serían dependencias y tendría otro 'servidor' de tareas que dependería de ellas). No es necesario ningún truco.fuente
En Gulp 4, lo único que parece funcionar para mí es:
fuente
Para ejecutar una tarea antes de comenzar a mirar, en lugar de usar gulp.run () o gulp.start (), simplemente ejecute el comando gulp directamente.
Entonces en lugar de:
Solo haz:
O puede envolver ese último código en una función "normal" y llamarlo cuando lo desee.
- Inspirado por esta respuesta de un hilo similar .
fuente
Todavía no veo cómo esto realmente resuelve la pregunta en cuestión.
Si tengo 4 tareas con dependencias definidas entre ellas
A B C D
donde A depende de B, etc., según lo definido por
gulp.task('A',['B'],function A(){});
y luego definí una nueva tarea usando gulp.watch ejecutando solo las funciones duplicaría las dependencias.por ejemplo, dadas estas tareas (cada función de tareas expuesta a través del nombre):
puedo escribir 1)
que ejecutaría A-> D pero si, por ejemplo, el Paso B falla, nunca entraría en la tarea (piense en un error de compilación o prueba)
o puedo escribir 2)
que no ejecutaría A-> D hasta que se cambiara algo primero.
o puedo escribir 3)
lo que causaría duplicación (y errores a lo largo del tiempo) de la jerarquía de dependencias.
PD: En caso de que alguien se pregunte por qué querría que se ejecute mi tarea de vigilancia si alguna de las tareas dependientes falla, generalmente se debe a que uso la vigilancia para el desarrollo en vivo. p.ej. Comienzo mi tarea de reloj para comenzar a trabajar en pruebas, etc. y puede ser que el código inicial con el que comienzo ya tenga problemas, por lo tanto, errores.
Así que espero que gulp run o algo equivalente se quede por algún tiempo
fuente