-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathgulpfile.js
120 lines (106 loc) · 2.89 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
113
114
115
116
117
118
119
120
const gulp = require('gulp');
const concat = require('gulp-concat');
const rename = require('gulp-rename');
const uglify = require('gulp-uglify');
const postcss = require('gulp-postcss');
const cssnext = require('postcss-cssnext');
const colorRgbaFallback = require('postcss-color-rgba-fallback');
const opacity = require('postcss-opacity');
// const pseudoelements = require('postcss-pseudoelements');
const vmin = require('postcss-vmin');
const willChange = require('postcss-will-change');
const sass = require('gulp-sass')(require('sass'));
const cssnano = require('cssnano');
const zindex = require('postcss-zindex');
const removeComments = require('postcss-discard-comments');
const browserSync = require('browser-sync').create();
const plumber = require('gulp-plumber');
const gutil = require('gulp-util');
const babel = require('gulp-babel');
// Define base folders
const asset_src = 'assets/';
const npm_src = 'node_modules/';
const dest = 'assets/';
const onError = function( err ) {
console.log('An error occurred:', gutil.colors.magenta(err.message));
gutil.beep();
this.emit('end');
};
gulp.task('fonts', function() {
return gulp
.src([
npm_src + 'feather-icons/dist/feather-sprite.svg'
])
.pipe(gulp.dest('partials'));
});
// Concatenate & Minify JS
gulp.task('scripts', function() {
return gulp
.src([
npm_src + 'lazysizes/lazysizes.min.js',
npm_src + 'fitvids/dist/fitvids.min.js',
asset_src + 'js/scripts/prism.js',
asset_src + 'js/scripts/script.js'
])
.pipe(concat('app.js'))
.pipe(rename({suffix: '.min'}))
.pipe(uglify())
.pipe(gulp.dest(dest + 'js'));
});
// Css processors
var processors = [
removeComments,
zindex,
willChange,
colorRgbaFallback,
opacity,
// pseudoelements,
vmin,
cssnano
];
// Build styles from sass
gulp.task('sass', function () {
return gulp
.src(asset_src + '/sass/app.scss')
.pipe(plumber({ errorHandler: onError }))
.pipe(sass())
.pipe(postcss(processors))
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest(dest + 'css'));
});
// Browsersync init and reload
gulp.task('browsersync', function (callback) {
browserSync.init({
port: 3368,
proxy: 'http://localhost:2368/'
});
callback();
});
gulp.task('reload', function (callback) {
browserSync.reload();
callback();
});
// Watch for changes in files
gulp.task('watch:scripts', function () {
gulp.watch(asset_src + 'js/scripts/*.js', gulp.series('scripts', 'reload'));
});
gulp.task('watch:sass', function () {
gulp.watch(asset_src + 'sass/*.scss', gulp.series('sass', 'reload'));
});
gulp.task('watch:hbs', function () {
gulp.watch('**/*.hbs', gulp.series('reload'));
});
gulp.task('watch',
gulp.parallel('watch:scripts', 'watch:sass', 'watch:hbs')
);
// // Default Task
gulp.task('default',
gulp.series(
gulp.parallel(
'scripts',
'sass'
),
'browsersync',
'watch'
),
);