-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.babel.js
61 lines (52 loc) · 1.61 KB
/
gulpfile.babel.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
// Gulp module imports
import { src, dest, watch, parallel, series } from 'gulp';
import livereload from 'gulp-livereload';
import pug from 'gulp-pug';
import gulpif from 'gulp-if';
import notify from 'gulp-notify';
const emitty = require('emitty').setup('src', 'pug');
// Build Directories
// ----
const dirs = {
pug: {
src: './src',
dest: './build/html'
}
};
// File Sources
// ----
const sources = {
pug: `./src/*.pug`,
pugWatch: `./src/**/*.pug`,
};
export const buildPug = () => {
let condition = (file) => (/.minify.pug/.test(file.path));
return new Promise((resolve, reject) => {
emitty.scan(global.emittyChangedFile).then(() => {
src(sources.pug)
.pipe(gulpif(global.watch, emitty.filter(global.emittyChangedFile)))
.pipe(gulpif(condition, pug({pretty: false}), pug({pretty: true})))
.on('error', notify.onError({
title: "Error in Pug building",
message: "<%= error.name %>: <%= error.message %>"
}))
.pipe(dest(dirs.pug.dest))
.pipe(livereload())
.on('end', resolve)
.on('error', reject);
});
});
};
// Watch Task
export const devWatch = () => {
global.watch = true;
livereload.listen();
watch(sources.pugWatch, series('buildPug'))
.on('all', (event, filepath) => {
global.emittyChangedFile = filepath;
});
};
// Development Task
export const dev = series(buildPug, devWatch);
// Собрать только pug файлы
export const build = buildPug;