Учитывая следующие задачи gulp, я могу успешно запустить процесс gulp, webpack и nodemon, но задачи webpack открыты, поэтому они будут продолжать запускать обработчик завершения, когда цикл наблюдения/компиляции будет завершен.Избегайте повторного вызова завершения задачи, вызванного слишком много раз?
Задача сервера зависит от вывода задач клиента, поэтому мне нужна эти операции, чтобы быть синхронными, следовательно 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'));
});
});
При изменении файла, наблюдатель делает свое дело и глоток жалуется на обратном вызове будучи вызванным еще раз.
[15:00:25] Error: task completion callback called too many times
Я смотрел на это, но не уверен, что если его применимо.
Why might I be getting "task completion callback called too many times" in gulp?
В принципе, я просто хочу, чтобы это работало синхронно и непрерывно без ошибок.
gulp nodemon
не уверен, что это оказывает негативное влияние, но это работает –