-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
77 lines (77 loc) · 2.26 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
'use strict'
// load plugins
const gulp = require('gulp'),
del = require('del'),
browserSync = require('browser-sync').create(),
pug = require('gulp-pug'),
scss = require('gulp-sass'),
autoprefixer = require('gulp-autoprefixer'),
minifyCss = require('gulp-clean-css'),
rename = require('gulp-rename'),
webpack = require('webpack'),
webpackStream = require('webpack-stream'),
webpackConfig = require('./webpack.config.js')
// configuring paths
let srcDir = './src',
distDir = './dist'
// gulp functions
function ReloadBrowser() {
browserSync.init({
server: {
baseDir: `${distDir}/`,
index: 'index.html'
},
port: 3000,
notify: false
})
}
function BuildPug() {
return gulp.src(`${srcDir}/pug/*.pug`)
.pipe(pug({ pretty: true }))
.pipe(gulp.dest(`${distDir}/`))
.pipe(browserSync.stream())
}
function BuildScss() {
return gulp.src(`${srcDir}/scss/style.scss`)
.pipe(scss({ outputStyle: 'expanded' }))
.pipe(autoprefixer({
cascade: true,
overrideBrowserslist: ['last 5 versions']
}))
.pipe(gulp.dest(`${distDir}/styles/`))
.pipe(minifyCss())
.pipe(rename({ extname: '.min.css' }))
.pipe(gulp.dest(`${distDir}/styles/`))
.pipe(browserSync.stream())
}
function BuildJs() {
return gulp.src(`${srcDir}/js/**/*.ts`)
.pipe(webpackStream(webpackConfig, webpack))
.pipe(gulp.dest(`${distDir}/js/`))
.pipe(browserSync.stream())
}
function LoadXML() {
return gulp.src(`${srcDir}/*.xml`)
.pipe(gulp.dest(`${distDir}/`))
}
function WatchFiles() {
gulp.watch(`${srcDir}/pug/**/*.pug`, BuildPug)
gulp.watch(`${srcDir}/scss/**/*.scss`, BuildScss)
gulp.watch(`${srcDir}/js/**/*.ts`, BuildJs)
}
function CleanDist() {
return del([distDir]);
}
// your tasks
gulp.task('clear', CleanDist)
// define complex tasks && export
const build = gulp.series(CleanDist, BuildPug, BuildScss, LoadXML, BuildJs)
const watch = gulp.series(build, gulp.parallel(ReloadBrowser, WatchFiles))
exports.html = BuildPug
exports.css = BuildScss
exports.js = BuildJs
exports.xml = LoadXML
exports.clean = CleanDist
exports.build = build
exports.watch = watch
exports.default = watch