Angesichts der folgenden Schluckaufgaben bin ich in der Lage, den Prozess gulp, webpack und nodemon erfolgreich zu starten, aber die Webpack-Tasks sind open ended, so dass sie weiterhin den Abschlusshandler auslösen, wenn ihr Watch/Compile-Zyklus abgeschlossen ist.Vermeiden Sie den Call Callback der Aufgabe, der zu oft aufgerufen wird?
Die Server-Task hängt von der Client-Task ausgegeben, so muss ich diese Operationen synchron sein, daher der 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'));
});
});
Wenn ich eine Datei zu ändern, der Beobachter tut seine Sache und schluck beschwert sich über den Rückruf wieder aufgerufen werden.
[15:00:25] Error: task completion callback called too many times
Ich habe auf diese sah, aber nicht sicher, ob seine Anwendung.
Why might I be getting "task completion callback called too many times" in gulp?
Grundsätzlich möchte ich nur dies ohne Fehler synchron und kontinuierlich zu arbeiten.
gulp nodemon
nicht sicher, ob dies negative Auswirkungen hat, aber das funktioniert –