-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
111 lines (91 loc) · 2.7 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
const gulp = require('gulp'),
webpackStream = require('webpack-stream'),
browsersync = require('browser-sync').create(),
autoprefixer = require('gulp-autoprefixer'),
sourcemaps = require('gulp-sourcemaps'),
sass = require('gulp-sass'),
notify = require('gulp-notify'),
plumber = require('gulp-plumber'),
pug = require('gulp-pug'),
path = {
src: 'src',
dist: 'dist',
pug: 'views',
scss: 'scss',
css: 'css',
js: 'js'
},
files = {
pug: `${path.src}/${path.pug}/**/*.pug`,
css: `${path.dist}/${path.css}/**/*.css`,
scss: `${path.src}/${path.scss}/**/*.scss`,
js: `${path.src}/${path.js}/**/*.js`
}
let webpackOptions = require('./webpack.config')
// BrowserSync
function browserSync(done) {
browsersync.init({
server: {
baseDir: path.dist
}
})
done()
}
// HTML task
function htmlGenerate() {
return gulp
.src(`${path.src}/${path.pug}/*.pug`)
.pipe(plumber({
errorHandler: notify.onError( err => ({
title: 'Pug Builder',
message: err.message
}))
}))
.pipe(pug({
pretty: '\t'
}))
.pipe(gulp.dest(`${path.dist}`))
.pipe(browsersync.stream())
}
// CSS task
function cssGenerate() {
return gulp
.src(files.scss)
.pipe(sourcemaps.init())
.pipe(plumber({
errorHandler: notify.onError( err => ({
title: 'SCSS Builder',
message: err.message
}))
}))
.pipe(sass({ outputStyle: 'nested' }).on('error', sass.logError))
.pipe(autoprefixer('last 2 versions'))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(`${path.dist}/${path.css}`))
.pipe(browsersync.stream())
}
// Webpack
function jsGenerate() {
webpackOptions.mode = 'development'
return gulp
.src(files.js)
.pipe(plumber({
errorHandler: notify.onError( err => ({
title: 'Webpack Builder',
message: err.message
}))
}))
.pipe(webpackStream(webpackOptions))
.pipe(gulp.dest(`${path.dist}/${path.js}`))
.pipe(browsersync.stream())
}
// Watch files
function watchFiles() {
gulp.watch( files.scss, cssGenerate )
gulp.watch( files.pug, htmlGenerate )
gulp.watch( files.js, jsGenerate )
}
const watch = gulp.parallel(watchFiles, browserSync)
exports.css = cssGenerate
exports.html = htmlGenerate
exports.default = gulp.series(htmlGenerate, jsGenerate, cssGenerate, watch)