2015-09-18 14 views
6

Date le seguenti attività di gulp, sono in grado di avviare correttamente il processo gulp, webpack e nodemon, ma le attività del webpack sono aperte, quindi continueranno a generare il gestore di completamento quando il ciclo di visualizzazione/compilazione è completo.Evitare il callback del completamento attività chiamato troppe volte?

l'attività del server dipende dall'uscita compito cliente, quindi ho bisogno di queste operazioni per essere sincrona, da qui il done

function onBuild(done) { 
    return function(err, stats) { 
     if(err) { 
      gutil.log('Error', err); 
      if(done) { 
       done(); 
      } 
     } else { 
      Object.keys(stats.compilation.assets).forEach(function(key){ 
       gutil.log('Webpack: output ', gutil.colors.green(key)); 
      }); 
      gutil.log('Webpack: ', gutil.colors.blue('finished ', stats.compilation.name)); 
      if(done) { 
       done(); 
      } 
     } 
    } 
} 

//dev watch 
gulp.task('webpack-client-watch', function(done) { 
    webpack(devConfig[0]).watch(100, function(err, stats) { 
     onBuild(done)(err, stats); 
    }); 
}); 

gulp.task('webpack-server-watch', function(done) { 
    webpack(devConfig[1]).watch(100, function(err, stats) { 
     onBuild(done)(err, stats); 
     nodemon.restart(); 
    }); 
}); 

gulp.task('webpack-watch',function(callback) { 
    runSequence(
     'webpack-client-watch', 
     'webpack-server-watch', 
     callback 
    ); 
}); 

gulp.task('nodemon', ['webpack-watch'], function() { 
    nodemon({ 
     script: path.join('server/dist/index.js'), 
     //ignore everything 
     ignore: ['*'], 
     watch: ['foo/'], 
     ext: 'noop' 
    }).on('restart', function() { 
     gutil.log(gutil.colors.cyan('Restarted')); 
    }); 
}); 

Quando cambio di un file, l'osservatore fa la sua cosa e gulp lamenta il callback essere chiamato di nuovo.

[15:00:25] Error: task completion callback called too many times

Ho guardato questo, ma non è sicuro se il suo caso.

Why might I be getting "task completion callback called too many times" in gulp?

Fondamentalmente, voglio solo questo per funzionare in modo sincrono e continuamente senza errori.

gulp nodemon

risposta

8

Questo risolto per me: Basta non chiamare il parametro callback nel vostro compito webpack-watch. Lasciarlo fuori completamente.
Dopodiché, l'osservatore lavora bene e velocemente senza lamentarsi.

+1

non sicuro se questo dà alcun effetto negativo, ma questo funziona –

Problemi correlati