-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathgulpfile.js
More file actions
90 lines (74 loc) · 2.41 KB
/
Copy pathgulpfile.js
File metadata and controls
90 lines (74 loc) · 2.41 KB
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
"use strict";
const gulp = require('gulp'),
sass = require('gulp-sass')(require('sass')),
del = require('del'),
cleanCSS = require('gulp-clean-css'),
rename = require("gulp-rename"),
webpack = require('webpack-stream'),
autoprefixer = require('gulp-autoprefixer'),
browserSync = require('browser-sync').create();
// delete the dist folder
gulp.task('clean', function () {
return del(['dist']);
});
// Compile SCSS(SASS) files to CSS and copy to dist/css
gulp.task('scss', function () {
return gulp.src(['./src/scss/*.scss'])
.pipe(sass.sync({
outputStyle: 'expanded'
}).on('error', sass.logError))
.pipe(autoprefixer())
.pipe(cleanCSS())
.pipe(rename({
suffix: '.min'
}))
.pipe(gulp.dest('./dist/assets/css'))
.pipe(browserSync.stream());
});
// Build Js
gulp.task('webpack', function () {
return gulp.src('src/js/index.js')
.pipe(webpack(require('./webpack.config.js')))
.pipe(gulp.dest('./dist/assets/js'))
.pipe(browserSync.stream());
});
// Copy Images
gulp.task('images', function () {
return gulp.src("src/*.html").pipe(gulp.dest('./dist/'));
});
// Copy HTML
gulp.task('html', function () {
return gulp.src("src/img/**").pipe(gulp.dest('./dist/assets/img'));
});
// Configure the browserSync task and watch file path for change
gulp.task('dev', function browserDev(done) {
browserSync.init({
server: {
baseDir: "./dist"
}
}, (err, bs) => {
bs.addMiddleware("*", (req, res) => {
res.writeHead(302, {
location: "/"
});
res.end("Redirecting!");
});
});
gulp.watch(['src/scss/*.scss', 'src/scss/**/*.scss', '!src/scss/bootstrap/**'], gulp.series('scss', function cssBrowserReload(done) {
// browserSync.reload();
done(); //Async callback for completion.
}));
gulp.watch(['src/js/*.js', 'src/js/**/*.js'], gulp.series('webpack', function jsBrowserReload(done) {
browserSync.reload();
done();
}));
gulp.watch(['src/vue/*.vue', 'src/vue/**/*.vue'], gulp.series('webpack', function jsBrowserReload(done) {
browserSync.reload();
done();
}));
done();
});
// Build task
gulp.task("build", gulp.parallel('scss', 'webpack', 'images', 'html'));
// Default task
gulp.task("default", gulp.series('clean', 'build'));