1
1
1
1
xxxxxxxxxx
1
const gulp = require('gulp');
2
const sass = require('gulp-sass');
3
const autoprefixer = require('gulp-autoprefixer');
4
const cssmin = require('gulp-cssmin');
5
const browserSync = require('browser-sync').create();
6
const concat = require('gulp-concat');
7
const minify = require('gulp-minify');
8
const rename = require('gulp-rename');
9
const imagemin = require('gulp-imagemin');
10
const fs = require('fs');
11
12
const cssAddonsPath = './css/modules/';
13
14
// CSS Tasks
15
gulp.task('css-compile-modules', (done) => {
16
gulp.src('scss/**/modules/**/*.scss')
17
.pipe(sass({outputStyle: 'nested'}).on('error', sass.logError))
18
.pipe(autoprefixer())
19
.pipe(rename({ dirname: cssAddonsPath }))
20
.pipe(gulp.dest('./dist/'));
21
22
done();
23
});
24
25
gulp.task('css-compile', gulp.series('css-compile-modules', () => {
26
return gulp.src('scss/*.scss')
27
.pipe(sass({outputStyle: 'nested'}).on('error', sass.logError))
28
.pipe(autoprefixer())
29
.pipe(gulp.dest('./dist/css/'));
30
}));
31
32
gulp.task('css-minify-modules', () => {
33
return gulp.src(['./dist/css/modules/*.css', '!./dist/css/modules/*.min.css'])
34
.pipe(cssmin())
35
.pipe(rename({suffix: '.min'}))
36
.pipe(gulp.dest('./dist/css/modules'));
37
});
38
39
gulp.task('css-minify', gulp.series('css-minify-modules', () => {
40
return gulp.src(['./dist/css/*.css', '!./dist/css/*.min.css', '!./dist/css/bootstrap.css'])
41
.pipe(cssmin())
42
.pipe(rename({suffix: '.min'}))
43
.pipe(gulp.dest('./dist/css'));
44
}));
45
46
// JavaScript Tasks
47
gulp.task('js-build', () => {
48
49
const plugins = getJSModules();
50
51
return gulp.src(plugins.modules)
52
.pipe(concat('mdb.js'))
53
.pipe(gulp.dest('./dist/js/'));
54
55
gulp.start('js-lite-build');
56
gulp.start('js-minify');
57
58
});
59
60
gulp.task('js-minify', () => {
61
return gulp.src(['./dist/js/mdb.js'])
62
.pipe(minify({
63
ext:{
64
// src:'.js',
65
min:'.min.js'
66
},
67
noSource: true,
68
}))
69
.pipe(gulp.dest('./dist/js'));
70
});
71
72
// Image Compression
73
gulp.task('img-compression', function() {
74
gulp.src('./img/*')
75
.pipe(imagemin([
76
imagemin.gifsicle({interlaced: true}),
77
imagemin.jpegtran({progressive: true}),
78
imagemin.optipng({optimizationLevel: 5}),
79
imagemin.svgo({
80
plugins: [
81
{removeViewBox: true},
82
{cleanupIDs: false}
83
]
84
})
85
]))
86
.pipe(gulp.dest('./dist/img'));
87
});
88
89
// Live Server
90
gulp.task('live-server', function() {
91
browserSync.init({
92
server: {
93
baseDir: "./dist",
94
directory: true
95
},
96
notify: false
97
});
98
99
gulp.watch("**/*", {cwd: './dist/'}, browserSync.reload);
100
});
101
102
// Watch on everything
103
gulp.task('mdb-go', function() {
104
gulp.start('live-server');
105
gulp.watch("scss/**/*.scss", ['css-compile']);
106
gulp.watch(["dist/css/*.css", "!dist/css/*.min.css"], ['css-minify']);
107
gulp.watch("js/**/*.js", ['js-build']);
108
gulp.watch(["dist/js/*.js", "!dist/js/*.min.js"], ['js-minify']);
109
gulp.watch("**/*", {cwd: './img/'}, ['img-compression']);
110
});
111
112
function getJSModules() {
113
delete require.cache[require.resolve('./js/modules.js')];
114
return require('./js/modules');
115
}
116
Console errors: 0