Имеется 3 таска для sass, js и watch
Задача сделать default таск для Gulp 4, чтобы при его запуске сразу формировались css, js файлы, а после запускался watch и browser sync.
P.S. Если написать так как показано ниже, то при запуске и дальнейших изменениях в sass или js файлах, соответствующие таски будут выполняться дважды, а этого не нужно.
gulp.task('default', gulp.series(
gulp.parallel('styles', 'scripts', 'images'),
gulp.parallel('watch', 'browser-sync')
));
Примеры тасков
styles
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.stream())
});
scripts
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.stream())
});
browser sync
gulp.task('browser-sync', function() {
browserSync({
server: {
baseDir: source
},
notify: false,
})
});
watch
gulp.task('watch', function() {
gulp.watch(source+'/*.html')
gulp.watch(source+'/'+syntax+'/**/*.'+syntax)
gulp.watch(source+'/js/common.js')
});