-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
112 lines (101 loc) · 3.1 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
100
101
102
103
104
105
106
107
108
109
110
111
112
const gulp = require('gulp'),
watch = require('gulp-watch'),
plumber = require('gulp-plumber'),
notify = require('gulp-notify'),
source = require('vinyl-source-stream'),
buffer = require('vinyl-buffer'),
pug = require('gulp-pug'),
sass = require('gulp-sass'),
pump = require('pump'),
postcss = require('gulp-postcss'),
autoprefixer = require('autoprefixer'),
minifyCSS = require('gulp-csso'),
babel = require('gulp-babel'),
uglify = require('gulp-uglify-es').default,
concat = require('gulp-concat'),
browserSync = require('browser-sync').create();
gulp.task('pug', () => {
return gulp.src('./src/templates/**/*.pug')
.pipe(plumber({errorHandler: notify.onError({
message: "<%= error.message %>",
title: "Template compilation"
})}))
.pipe(pug({
basedir: '.'
}))
.pipe(gulp.dest('./dist/'))
.pipe(browserSync.stream())
})
gulp.task('scss', () => {
return gulp.src('./src/css/main.scss')
.pipe(plumber({errorHandler: notify.onError({
message: "<%= error.message %>",
title: "CSS preprocessing"
})}))
.pipe(sass())
.pipe(postcss([autoprefixer({browsers: ['last 3 version']})]))
.pipe(minifyCSS())
.pipe(gulp.dest('./dist/css'))
.pipe(browserSync.stream({match: '**/*.css'}));
});
gulp.task('js', (b) => {
pump([
gulp.src(['./src/js/vendors/*.js','./src/js/vendors/plugins/*.js', './src/js/main.js']),
// babel({ presets: ['env'] }), // CONVERT TO ES5
concat('main.min.js'),
uglify(),
gulp.dest('./dist/js/')
],
b
);
});
gulp.task('serve', () => {
browserSync.init({
server: "./dist/",
open: false,
})
gulp.watch("./src/css/**/*.scss", ['scss'])
gulp.watch("./src/js/**/*.js", ['js'])
gulp.watch("./src/templates/**/*.pug", ['pug'])
gulp.watch("./src/apps/**/*.pug", ['pug'])
gulp.watch('./src/img/**/*', browserSync.reload)
})
gulp.task('img', function () {
return gulp.src('./src/img/*.*')
.pipe(gulp.dest('./dist/img/'));
});
gulp.task('fonts', function () {
return gulp.src('./src/fonts/*.*')
.pipe(gulp.dest('./dist/fonts/'));
});
gulp.task('data', function () {
return gulp.src('./src/data/**/*.json')
.pipe(gulp.dest('./dist/data/'));
});
gulp.task('apps-files', function () {
return gulp.src(['./src/apps/**/*.hbs', './src/apps/**/*.json'])
.pipe(gulp.dest('./dist/apps/'));
});
gulp.task('apps-pug', function() {
return gulp.src('./src/apps/**/*.pug')
.pipe(plumber({errorHandler: notify.onError({
message: "<%= error.message %>",
title: "Template compilation"
})}))
.pipe(pug())
.pipe(gulp.dest('./dist/apps/'))
.pipe(browserSync.stream())
});
gulp.task('apps-js', (b) => {
pump([
gulp.src(['./src/apps/**/*.js']),
// babel({ presets: ['env'] }), // CONVERT TO ES5
uglify(),
gulp.dest('./dist/apps/')
],
b
);
});
gulp.task('apps', ['apps-pug','apps-js','apps-files']);
gulp.task('build', [ 'pug', 'scss', 'apps', 'fonts', 'data', 'img', 'js' ])
gulp.task('default', [ 'build', 'serve' ])