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
non sicuro se questo dà alcun effetto negativo, ma questo funziona –