-var gulp = require('gulp');
+const {series, watch, src, dest, parallel} = require('gulp');
+const pump = require('pump');
// gulp plugins and utils
-var gutil = require('gulp-util');
var livereload = require('gulp-livereload');
var sass = require('gulp-sass');
-var sourcemaps = require('gulp-sourcemaps');
var zip = require('gulp-zip');
+var beeper = require('beeper');
-var swallowError = function swallowError(error) {
- gutil.log(error.toString());
- gutil.beep();
- this.emit('end');
-};
+function serve(done) {
+ livereload.listen();
+ done();
+}
-var nodemonServerInit = function () {
- livereload.listen(1234);
+const handleError = (done) => {
+ return function (err) {
+ if (err) {
+ beeper();
+ }
+ return done(err);
+ };
};
sass.compiler = require('node-sass');
-gulp.task('build', ['css'], function (/* cb */) {
- return nodemonServerInit();
-});
-
-gulp.task('generate', ['css']);
-
-gulp.task('css', function () {
- return gulp.src('./assets/main/sass/*.scss')
- .pipe(sourcemaps.init())
- .pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
- .pipe(sourcemaps.write('./'))
- .pipe(gulp.dest('assets/main/css/'))
- .pipe(livereload());
-});
+function hbs(done) {
+ pump([
+ src(['*.hbs', 'partials/**/*.hbs', '!node_modules/**/*.hbs']),
+ livereload()
+ ], handleError(done));
+}
-gulp.task('watch', function () {
- gulp.watch('./assets/main/sass/**/**', ['css']);
-});
+function css(done) {
+ pump([
+ src('./assets/main/sass/*.scss', {sourcemaps: true}),
+ sass({outputStyle: 'compressed'}).on('error', sass.logError),
+ dest('assets/main/css', {sourcemaps: './'}),
+ livereload()
+ ], handleError(done));
+}
-gulp.task('zip', ['css'], function () {
+function zipper(done) {
var targetDir = 'dist/';
var themeName = require('./package.json').name;
var filename = themeName + '.zip';
- return gulp.src([
- '**',
- '!node_modules', '!node_modules/**',
- '!dist', '!dist/**'
- ])
- .pipe(zip(filename))
- .pipe(gulp.dest(targetDir));
-});
-
-gulp.task('default', ['build'], function () {
- gulp.start('watch');
-});
+ pump([
+ src([
+ '**',
+ '!node_modules', '!node_modules/**',
+ '!dist', '!dist/**'
+ ]),
+ zip(filename),
+ dest(targetDir)
+ ], handleError(done));
+}
+
+const cssWatcher = () => watch('./assets/main/sass/**/**', css);
+const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs', '!node_modules/**/*.hbs'], hbs);
+const watcher = parallel(cssWatcher, hbsWatcher);
+const build = series(css);
+const dev = series(build, serve, watcher);
+
+exports.build = build;
+exports.zip = series(build, zipper);
+exports.default = dev;