@zetproj
GBA

Двойное выполнение таска в 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')
));
  • Вопрос задан
  • 218 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы