Voici une tâche composée que je ne sais pas comment la remplacer par des dépendances de tâches.
...
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');
});
});
Le journal des modifications correspondant https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md#35 [deprecate gulp.run]
javascript
gulp
toutpt
la source
la source
scripts
, mais il est également logique de forcer l'exécution de cette tâche tout de suite (sans attendre que certains fichiers de script soient modifiés).gulp.task('default', ['build', 'watch']);
, qui se construit d'abord, puis commence à regarder.Ou vous pouvez faire comme ceci:
la source
.start
est une méthode Orchestrator. Puisque Gulp en hérite, cela devrait fonctionner. Je déclenche une tâche gulp à partir d'une fonction non gulp (watchify) et cela semble fonctionner.gulp.start
sera supprimé dans la prochaine version: github.com/gulpjs/gulp/issues/505#issuecomment-45379280gulp-start
peuvent être remplacées parrun-sequence
npmjs.com/package/run-sequencesource: https://github.com/gulpjs/gulp/issues/755
gulp.start()
n'a jamais été conçue pour être une API publique ni utilisée. Et comme indiqué plus haut dans les commentaires, la gestion des tâches est remplacée dans la prochaine version .... doncgulp.start()
violeront.La véritable intention de la conception de gulp est de créer des fonctions Javascript régulières et de ne faire que la tâche de les appeler.
Exemple:
la source
Pardonnez-moi d'avoir ressuscité une vieille question. La réponse acceptée n'aborde pas le problème de l'exécution des tâches avant le réglage des montres. La réponse suivante utilise gulp.start qui disparaît. La troisième réponse souligne que les fonctions régulières devraient être utilisées mais l'exemple semble étrange. J'ai fait quelques recherches mais je n'ai pas trouvé d'exemple simple.
Voici ma solution. L'idée est de définir des fonctions js régulières puis de les enregistrer en tant que tâches. Les fonctions peuvent alors être appelées directement si nécessaire ou depuis une montre.
Je suis nouveau à avaler. Veuillez me faire savoir si j'ai oublié quelque chose d'évident.
la source
gulp.watch
tâches définieswatchTask()
avant labuildTask()
confirmation de l'achèvement? J'ai l'impression que c'est toujours une condition de course et ne garantit pas la construction avant la montre.avaler 4
J'aime gulp4!
la source
Comme @dman le mentionne,
gulp.start
sera supprimé dans la prochaine version. On peut également le voir dans ce numéro de gulp .Et dans les commentaires de la réponse de @Pavel Evstigneev, @joemaller mentionne que nous pouvons utiliser run-sequence dans ce scénario.
Mais s'il vous plaît noter que, l'auteur de run-sequence dit:
Donc, avant gulp 4.0, nous pouvons utiliser run-sequence , après 4.0, nous pouvons simplement utiliser gulp.
la source
Si vous avez besoin de maintenir l'ordre d'exécution des tâches, vous pouvez définir les dépendances comme décrit ici - il vous suffit de renvoyer le flux depuis la dépendance:
Définissez la tâche qui en dépend:
Et utilisez-le depuis la montre:
Maintenant, la
dependecy
tâche se terminera avant l'depends
exécution (par exemple, vos tâches 'jasmine' et 'embed' seraient des dépendances et vous auriez une autre tâche 'serveur' qui en dépendrait). Pas besoin de hacks.la source
Dans Gulp 4, la seule chose qui semble fonctionner pour moi est:
la source
Pour exécuter une tâche avant de commencer à regarder, au lieu d'utiliser gulp.run () ou gulp.start (), exécutez simplement la commande gulp directement.
Donc au lieu de:
Faites simplement:
Ou vous pouvez envelopper ce dernier code dans une fonction "normale" et l'appeler quand vous le souhaitez.
- Inspiré par cette réponse à partir d'un fil similaire .
la source
Je ne vois toujours pas comment cela résout réellement la question à portée de main.
Si j'ai 4 tâches avec des dépendances définies entre elles
A B C D
où A dépend de B, etc. tel que défini par
gulp.task('A',['B'],function A(){});
, puis j'ai défini une nouvelle tâche en utilisant gulp.watch en exécutant uniquement les fonctions dupliquerait les dépendances.Par exemple, étant donné ces tâches (chaque fonction de tâches exposée via le nom):
je peux écrire 1)
qui exécuterait A-> D mais si, par exemple, l'étape B échoue, elle n'entrerait jamais dans la tâche (pensez à une erreur de compilation ou de test)
ou je peux écrire 2)
qui n'exécuterait pas A-> D tant que quelque chose n'a pas été modifié en premier.
ou je peux écrire 3)
ce qui entraînerait une duplication (et des erreurs au fil du temps) de la hiérarchie de dépendances.
PS: Au cas où quelqu'un se demanderait pourquoi je voudrais que ma tâche de surveillance s'exécute si l'une des tâches dépendantes échoue, c'est généralement parce que j'utilise watch pour le développement en direct. par exemple. Je commence ma tâche de surveillance pour commencer à travailler sur des tests, etc. et il se peut que le code initial avec lequel je commence ait déjà des problèmes, donc des erreurs.
J'espère donc que gulp run ou un équivalent reste pendant un certain temps
la source