151 votes

Gorgées gulp.veiller à ne pas déclenché de nouvelles ou des fichiers supprimés?

La suite Gulpjs tâche fonctionne très bien lors de l'édition de fichiers dans le glob match:

// 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');
});

Toutefois, il ne fonctionne pas (il n'est pas déclenchée) pour les nouveaux ou les fichiers supprimés. Est-il quelque chose que je suis absent?

EDIT: même en utilisant grunt-regarder plugin, il ne semble pas travailler:

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 cette question. Globs en commençant par ./ (qui est la valeur de src) ne semble pas travailler ATM.

129voto

OverZealous Points 14115

Vous n'êtes pas de manquer quelque chose. gulp.watch ne pas travailler avec de nouveaux ou de fichiers supprimés. C'est une solution simple, conçu pour les projets simples.

Pour obtenir le fichier de regarder qui peut rechercher de nouveaux fichiers, utilisez l' gulp-watch plugin, ce qui est beaucoup plus puissant. L'utilisation ressemble à ceci:

var watch = require('gulp-watch');

// in a task
watch({glob: <<glob or array of globs>> })
        .pipe( << add per-file tasks here>> );

// if you'd rather rerun the whole task, you can do this:
watch({glob: <<glob or array of globs>>}, function() {
    gulp.start( <<task name>> );
});

Personnellement, je recommande la première option. Cela permet d'accélérer, d'un fichier de processus. Il fonctionne très bien en cours de développement avec livereload aussi longtemps que vous n'êtes pas de la concaténation de tous les fichiers.

Vous pouvez envelopper votre flux soit à l'aide de mon lazypipe bibliothèque, ou tout simplement à l'aide d'une fonction et d' stream-combiner comme ceci:

var combine = require('stream-combiner');

function scriptsPipeline() {
    return combine(coffeeescript(), uglify(), gulp.dest('/path/to/dest'));
}

watch({glob: 'src/scripts/**/*.js' })
        .pipe(scriptsPipeline());

Mise à JOUR le 15 octobre 2014

Comme l'a souligné @pkyeck ci-dessous, apparemment la version 1.0 de gulp-watch changé le format légèrement, de sorte que les exemples ci-dessus devrait être maintenant:

var watch = require('gulp-watch');

// in a task
watch(<<glob or array of globs>>)
        .pipe( << add per-file tasks here>> );

// if you'd rather rerun the whole task, you can do this:
watch(<<glob or array of globs>>, function() {
    gulp.start( <<task name>> );
});

et

var combine = require('stream-combiner');

function scriptsPipeline() {
    return combine(coffeeescript(), uglify(), gulp.dest('/path/to/dest'));
}

watch('src/scripts/**/*.js')
        .pipe(scriptsPipeline());

87voto

Nestor Urquiza Points 81

Les deux gulp.watch() et require('gulp-watch')() déclenchera pour les nouveaux/fichiers supprimés cependant pas si vous utilisez absolue des répertoires. Dans mes tests, je n'ai pas utilisé "./" relative des répertoires BTW.

Les deux ne se déclenche pas si répertoires entiers sont supprimés.

   var watch = require('gulp-watch');
   //Wont work for new files until gaze is fixed if using absolute dirs. It  won't trigger if whole directories are deleted though.
   //gulp.watch(config.localDeploy.path + '/reports/**/*', function (event) {

   //gulp.watch('src/app1/reports/**/*', function (event) {
   // console.log('*************************** Event received in gulp.watch');
   // console.log(event);
   // gulp.start('localDeployApp');
   });

   //Won't work for new files until gaze is fixed if using absolute dirs. It  won't trigger if whole directories are deleted though. See https://github.com/floatdrop/gulp-watch/issues/104
   //watch(config.localDeploy.path + '/reports/**/*', function() {

   watch('src/krfs-app/reports/**/*', function(event) {
      console.log("watch triggered");
      console.log(event);
      gulp.start('localDeployApp');
   //});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X