Added tag page
[editorial.git] / gulpfile.js
1 const {series, watch, src, dest, parallel} = 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 hbs(done) {
27 pump([
28 src(['*.hbs', 'partials/**/*.hbs', '!node_modules/**/*.hbs']),
29 livereload()
30 ], handleError(done));
31 }
32
33 function css(done) {
34 pump([
35 src('./assets/main/sass/*.scss', {sourcemaps: true}),
36 sass({outputStyle: 'compressed'}).on('error', sass.logError),
37 dest('assets/main/css', {sourcemaps: './'}),
38 livereload()
39 ], handleError(done));
40 }
41
42 function zipper(done) {
43 var targetDir = 'dist/';
44 var themeName = require('./package.json').name;
45 var filename = themeName + '.zip';
46
47 pump([
48 src([
49 '**',
50 '!node_modules', '!node_modules/**',
51 '!dist', '!dist/**'
52 ]),
53 zip(filename),
54 dest(targetDir)
55 ], handleError(done));
56 }
57
58 const cssWatcher = () => watch('./assets/main/sass/**/**', css);
59 const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs', '!node_modules/**/*.hbs'], hbs);
60 const watcher = parallel(cssWatcher, hbsWatcher);
61 const build = series(css);
62 const dev = series(build, serve, watcher);
63
64 exports.build = build;
65 exports.zip = series(build, zipper);
66 exports.default = dev;