@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')
));
  • Вопрос задан
  • 155 просмотров
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro
frontend developer
как минимум, не нужно сохранять билд в папку исходников.
Ответ написан
Ваш ответ на вопрос

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

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