La tâche Gulpjs suivante fonctionne correctement lors de l'édition de fichiers dans la correspondance globale:
// watch task.
gulp.task('watch', ['build'], function () {
gulp.watch(src + '/js/**/*.js', ['scripts']);
gulp.watch(src + '/img//**/*.{jpg,jpeg,png,gif}', ['copy:images']);
gulp.watch(src + '/less/*.less', ['styles']);
gulp.watch(src + '/templates/**/*.{swig,json}', ['html']);
});
// build task.
gulp.task('build', ['clean'], function() {
return gulp.start('copy', 'scripts', 'less', 'htmlmin');
});
Cependant, cela ne fonctionne pas (il n'est pas déclenché) pour les fichiers nouveaux ou supprimés. Y a-t-il quelque chose qui me manque?
EDIT : même en utilisant le plugin grunt-watch, cela ne semble pas fonctionner:
gulp.task('scripts', function() {
return streamqueue(
{ objectMode: true },
gulp.src([
vendor + '/jquery/dist/jquery.min.js',
vendor + '/bootstrap/dist/js/bootstrap.min.js'
]),
gulp.src([
src + '/js/**/*.js'
]).pipe(plugins.uglify())
)
.pipe(plugins.concat(pkg.name + '.min.js'))
.pipe(gulp.dest(dest + '/js/'));
});
gulp.task('watch', ['build'], function () {
plugins.watch({glob: src + '/js/**/*.js'}, function () {
gulp.start('scripts');
});
});
EDIT : Résolu, c'était ce problème . Globs commençant par ./
(c'était la valeur de src
) ne semble pas fonctionner ATM.
javascript
node.js
gulp
gremo
la source
la source
gulp-watch
, par exemplegulp.watch('js/**/*.js', {cwd: src}, ['scripts']);
Réponses:
Edit: fonctionne apparemment
gulp.watch
avec des fichiers nouveaux ou supprimés maintenant. Ce n'était pas le cas lorsque la question a été posée.Le reste de ma réponse est toujours valable:
gulp-watch
est généralement une meilleure solution car elle vous permet d'effectuer des actions spécifiques uniquement sur les fichiers qui ont été modifiés, tout engulp.watch
vous permettant uniquement d'exécuter des tâches complètes. Pour un projet d'une taille raisonnable, cela deviendra vite trop lent pour être utile.Vous ne manquez rien.
gulp.watch
ne fonctionne pas avec les fichiers nouveaux ou supprimés. C'est une solution simple conçue pour des projets simples.Pour obtenir une surveillance de fichiers capable de rechercher de nouveaux fichiers, utilisez le
gulp-watch
plugin , qui est beaucoup plus puissant. L'utilisation ressemble à ceci:Personnellement, je recommande la première option. Cela permet des processus par fichier beaucoup plus rapides. Cela fonctionne très bien pendant le développement avec livereload tant que vous ne concaténez aucun fichier.
Vous pouvez encapsuler vos flux soit en utilisant ma
lazypipe
bibliothèque , soit simplement en utilisant une fonction etstream-combiner
comme ceci:MISE À JOUR 15 octobre 2014
Comme indiqué par @pkyeck ci-dessous, apparemment la version 1.0 de
gulp-watch
a légèrement changé le format, donc les exemples ci-dessus devraient maintenant être:et
la source
Les deux
gulp.watch()
etrequire('gulp-watch')()
se déclencheront pour les fichiers nouveaux / supprimés, mais pas si vous utilisez des répertoires absolus. Dans mes tests, je n'ai pas utilisé"./"
pour les répertoires relatifs BTW.Les deux ne se déclencheront pas si des répertoires entiers sont supprimés.
la source
./
leur chemin - en fait, cela semble être une mauvaise pratique - github.com/floatdrop/gulp-watch/issues/1gulp-watch
fonctionner correctement pour déclencher de nouveaux fichiers ou des fichiers supprimés. Ce n'est pas nécessaire!gulp.watch
est ce que ca. Tout supprimer./
des chemins a résolu les problèmes. Impressionnant.S'il
src
s'agit d'un chemin absolu (commençant par/
), votre code ne détectera pas les fichiers nouveaux ou supprimés. Cependant, il y a encore un moyen:Au lieu de:
écrire:
et cela fonctionnera!
la source
{ cwd: src }
indice était ma solution. Merci beaucoup!watch
{cwd:'./'}
et laissez le modèle de glob comme tel pour qu'il deviennegulp.watch('src/js/**/*.js', {cwd: './'}, ['scripts']);
Globs doit avoir un répertoire de base distinct spécifié et cet emplacement de base ne doit pas être spécifié dans le glob lui-même.
Si vous avez
lib/*.js
, il regardera sous le répertoire de travail actuel qui estprocess.cwd()
Gulp utilise Gaze pour regarder les fichiers et dans la documentation de l'API Gulp, nous voyons que nous pouvons transmettre des options spécifiques à Gaze à la fonction de surveillance:
gulp.watch(glob[, opts], tasks)
Maintenant, dans la documentation Gaze, nous pouvons trouver que le répertoire de travail actuel (répertoire de base glob) est l'
cwd
option.Ce qui nous amène à la réponse d'Alexk:
gulp.watch('js/**/*.js', {cwd: src}, ['scripts']);
la source
Je sais que c'est une question plus ancienne, mais j'ai pensé jeter la solution que j'ai trouvée. Aucun des plugins gulp que j'ai trouvés ne m'avertirait de nouveaux fichiers ou de fichiers renommés. J'ai donc fini par emballer le monocle dans une fonction de commodité.
Voici un exemple d'utilisation de cette fonction:
Je dois noter que gulpStart est également une fonction pratique que j'ai créée.
Et voici le module de montre réel.
Assez simple, hein? Le tout peut être trouvé dans mon kit de démarrage gulp: https://github.com/chrisdavies/gulp_starter_kit
la source
utils
dossier)Il est important de noter que cela ressemble à gulp.watch ne signale que les fichiers modifiés et supprimés sous Windows mais écoute les fichiers nouveaux et supprimés par défaut sur OSX:
https://github.com/gulpjs/gulp/issues/675
la source
Vous devriez utiliser 'gulp-watch' pour les fichiers nouveaux / renommés / supprimés au lieu de gulp.watch
la source