Comment faire pour exécuter une gorgée tâche à partir d'une autre tâche?
Je suis conscient de la possibilité de déclarer des dépendances qui sera exécuté avant la tâche, par exemple
gulp.task('a', () => {});
gulp.task('b', () => {});
gulp.task('c', ['a', 'c'], () => {});
Tâches 'a' et 'b' sera exécuté chaque fois après la tâche "c' est appelé et avant que la tâche " c " est exécutée.
Cependant, comment dois-je appeler par programmation un arbitraire de la tâche à partir de l'intérieur d'un gulp.task
?
Vous devez vous connecter pour publier un commentaire.
Je l'ai fait à l'aide de gulp.start(); comme ceci:
J'ai été en utilisant gulp 3.9.1 si il le faut. Ressemble gulp.start() peuvent être retirés ou abandonnés; mais il n'est pas encore arrivé.
Mise à jour
Si je devais casser des choses dans des fonctions distinctes, comme Novellizator suggéré, il serait quelque chose comme ceci:
Il est simple et permet d'éviter l'utilisation de gulp.start().
Sur le thème général de "ne pas" d'autres réponses, cela dépend de ce que vous êtes en train de faire.
Si vous êtes en train de penser:
Vous voulez:
Cela fonctionne parce que toutes les tâches sont lancés dans l'ordre, donc si vous ne faites rien async en "méta-un", il sera fini avant "b" commence. Si c'est de l'asynchrone, alors vous devez être plus explicite:
De Gulp 4+, j'ai trouvé que cela fonctionne bien comme un remplacement pour le trait.départ:
Sur une note connexe, vous pouvez lancer les tâches à l'aide soit
gulp.series
ougulp.parallel
dans gulp v4. Bien que ce n'est pas un remplacement direct pourgulp.start
, il permet d'atteindre le même objectif.Exemple:
Avant v4
Après v4
Comme JeffryHouser indiqué ci-dessus à l'aide de la méthode suivante fonctionne mais est obsolète et sera supprimée dans une future version. Je viens de tenter la suite sur 3.9.1 et il fonctionne très bien.
Code:
Le deuxième moyen mentionné dans le commentaire par Novellizator est:
Je fais cela par l'utilisation de lazypipe() https://www.npmjs.com/package/lazypipe
Code:
Une brève comparaison
Méthode 1 ce qui donne les suivantes:
Pour un total de 61 ms pour compléter
Méthode 2?
- [23:03:24] à Partir de "par défaut"...
- [23:03:24] Terminé "par défaut" après 38 ms
Pratiquement la moitié de celui de 38 ms
Pour un total de différence de 23 ms
Maintenant pourquoi c'est le cas? Honnêtement, je n'en sais pas assez sur gulp à dire, mais disons que la méthode 2 est clairement plus lisible,maintenable et même le plus rapide choix.
Ils sont à la fois facile à écrire, aussi longtemps que vous ne comprenez pas d'appeler un flux directement au sein de la
lazypipe()
.Il ya un couple de façons de le faire:
La première: il suffit d'invoquer une nouvelle tâche d'appel pour les autres:
La seconde, moins propre: Gulp est en Javascript, il vous suffit de définir un couple d'instructions comme une fonction aléatoire et de l'appeler!