⬆️ Update Gulp to v4 and make livereload work
[editorial.git] / gulpfile.js
1 const { series, watch, src, dest } = require('gulp');
2 const pump = require('pump');
3
4 // gulp plugins and utils
5 var livereload = require('gulp-livereload');
6 var sass = require('gulp-sass');
7 var zip = require('gulp-zip');
8 var beeper = require('beeper');
9
10 function serve(done) {
11 livereload.listen();
12 done();
13 }
14
15 const handleError = (done) => {
16 return function (err) {
17 if (err) {
18 beeper();
19 }
20 return done(err);
21 };
22 };
23
24 sass.compiler = require('node-sass');
25
26 function css(done) {
27 pump([
28 src('./assets/main/sass/*.scss', { sourcemaps: true }),
29 sass({ outputStyle: 'compressed' }).on('error', sass.logError),
30 dest('assets/main/css', { sourcemaps: './' }),
31 livereload()
32 ], handleError(done));
33 }
34
35 function zipper(done) {
36 var targetDir = 'dist/';
37 var themeName = require('./package.json').name;
38 var filename = themeName + '.zip';
39
40 pump([
41 src([
42 '**',
43 '!node_modules', '!node_modules/**',
44 '!dist', '!dist/**'
45 ]),
46 zip(filename),
47 dest(targetDir)
48 ], handleError(done));
49 }
50
51 const watcher = () => watch('./assets/main/sass/**/**', css);
52 const build = series(css);
53 const dev = series(build, serve, watcher);
54
55 exports.build = build;
56 exports.zip = series(build, zipper);
57 exports.default = dev;