⬆️ Update Gulp to v4 and make livereload work
[editorial.git] / gulpfile.js
index 1940b03d23b8b0b72bd90e1abef9dcb23da843de..ea46129d78b65ddb4dc36acf86b3ad0f7d60870c 100644 (file)
@@ -1,57 +1,57 @@
-var gulp = require('gulp');
+const { series, watch, src, dest } = 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 swallowError = function swallowError(error) {
-    gutil.log(error.toString());
-    gutil.beep();
-    this.emit('end');
-};
-
-var nodemonServerInit = function () {
-    livereload.listen(1234);
+var beeper = require('beeper');
+
+function serve(done) {
+    livereload.listen();
+    done();
+}
+
+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());
-});
-
-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 watcher = () => watch('./assets/main/sass/**/**', css);
+const build = series(css);
+const dev = series(build, serve, watcher);
+
+exports.build = build;
+exports.zip = series(build, zipper);
+exports.default = dev;