@zetproj

Двойное выполнение таска в Gulp 4, в чем трабл?

При выполнении таска все правила срабатывают, при изменении файлов, watch все фиксирует, однако иногда таски выполняются по два раза. Например если после запуска дефолтного таска изменить файл SASS, то он может выполниться дважды. В чем может быть трабл?

gulp.task('code', function() {
  return gulp.src(source+'/*.html')
    .pipe(browserSync.reload({stream: true}))
});

gulp.task('styles', function(){
  return gulp.src(source+'/'+syntax+'/**/*.'+syntax)
    .pipe(sass({ outputStyle: 'expanded' }).on("error", notify.onError()))
    .pipe(autoprefixer(['last 15 versions']))
    .pipe(cleancss({ level: { 1: { specialComments: 'all' } } }))
    .pipe(rename({ prefix: '', suffix: '.min' }))
    .pipe(gulp.dest(source+'/css'))
    .pipe(browserSync.reload({stream: true}))
});

gulp.task('scripts', function() {
  return gulp.src(source+'/js/**/*.js')
    .pipe(concat('scripts.js'))
    .pipe(uglify())
    .pipe(rename({prefix: '', suffix: '.min'}))
    .pipe(gulp.dest(source+'/js'))
    .pipe(browserSync.reload({stream: true}))
});

gulp.task('images', function() {
  return gulp.src(source+'/img/**/*')
    .pipe(cache(imagemin({
      interlaced: true,
      progressive: true,
      svgoPlugins: [{removeViewBox: false}],
      use: [pngquant()]
    })))
    .pipe(gulp.dest(source+'/img'))
});

gulp.task('browser-sync', function() {
  browserSync({
    server: {
      baseDir: source
    },
    notify: false,
  })
});

gulp.task('watch', function() {
  gulp.watch(source+'/*.html', gulp.parallel('code'))
  gulp.watch(source+'/'+syntax+'/**/*.'+syntax, gulp.parallel('styles'))
  gulp.watch(source+'/js/common.js', gulp.parallel('scripts'))
});

gulp.task('default', gulp.series(
  gulp.series('styles', 'scripts', 'images'),
  gulp.parallel('watch', 'browser-sync')
));
  • Вопрос задан
  • 294 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы