-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
99 lines (89 loc) · 2.82 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
const {series, watch, src, dest, parallel} = require('gulp');
const gulp = require('gulp')
const pump = require('pump');
// gulp plugins and utils
const livereload = require('gulp-livereload');
const postcss = require('gulp-postcss');
const zip = require('gulp-zip');
const uglify = require('gulp-uglify');
const beeper = require('beeper');
const fs = require('fs');
const sass = require('gulp-sass');
const concat = require('gulp-concat');
const sourcemaps = require('gulp-sourcemaps');
const prefix = require('gulp-autoprefixer');
function serve(done) {
livereload.listen();
done();
}
const handleError = (done) => {
return function (err) {
if (err) {
beeper();
}
return done(err);
};
};
function hbs(done) {
pump([
src(['*.hbs', 'partials/**/*.hbs']),
livereload()
], handleError(done));
}
function css(done) {
pump([
gulp.src('assets/scss/main.scss')
.pipe(sourcemaps.init())
.pipe(sass({outputStyle: 'compressed'}))
.pipe(prefix({ cascade: false }))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('assets/built/')),
livereload()
], handleError(done));
}
function js(done) {
pump([
gulp.src([
'node_modules/jquery/dist/jquery.min.js',
'assets/js/libraries/*.js',
'node_modules/highlight.js/lib/highlight.js',
'node_modules/imagesloaded/imagesloaded.pkgd.min.js',
'node_modules/ghost-search/dist/ghost-search.min.js',
'node_modules/share-selected-text/dist/shareSelectedText.min.js',
'node_modules/sticky-kit/dist/sticky-kit.min.js',
'node_modules/rellax/rellax.min.js',
'node_modules/masonry-layout/dist/masonry.pkgd.min.js',
'node_modules/@tryghost/content-api/umd/content-api.min.js',
'assets/js/*.js'
])
.pipe(sourcemaps.init())
.pipe(concat('main.js'))
.pipe(sourcemaps.write()),
uglify(),
dest('assets/built/', {sourcemaps: '.'}),
livereload()
], handleError(done));
}
function zipper(done) {
const targetDir = 'dist/';
const themeName = require('./package.json').name;
const filename = themeName + '.zip';
pump([
src([
'**',
'!node_modules', '!node_modules/**',
'!dist', '!dist/**'
]),
zip(filename),
dest(targetDir)
], handleError(done));
}
const cssWatcher = () => watch('assets/scss/**', css);
const jsWatcher = () => watch('assets/js/**', js);
const hbsWatcher = () => watch(['*.hbs', 'partials/**/*.hbs'], hbs);
const watcher = parallel(cssWatcher, jsWatcher, hbsWatcher);
const build = series(css, js);
const dev = series(build, serve, watcher);
exports.build = build;
exports.zip = series(build, zipper);
exports.default = dev;