-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathgulpfile.js
100 lines (80 loc) · 2.73 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
/**
* Automating Development Tasks
* ----------------------------
* @package embed-any-document
* @since 2.6.0
*/
'use strict';
/*============================= Dependencies =============================*/
const gulp = require('gulp'),
rename = require('gulp-rename'),
lineEC = require('gulp-line-ending-corrector'),
bs = require('browser-sync').create();
/* --- Dependencies: css --- */
const cleanCSS = require('gulp-clean-css'), // Minify CSS
autoprefixer = require('gulp-autoprefixer');
/* --- Dependencies: js --- */
const uglify = require('gulp-uglify'); // Minify JavaScript
/*================================= Tasks =================================*/
let init = (cb) => {
console.log('-------------------------------------------');
console.log('<<<<<------- Embed Any Document ------->>>>>');
console.log('-------------------------------------------');
cb();
};
/* --- Tasks: Browsersync --- */
const DEV_URL = process.env.DEV_URL || 'localhost';
let browserSync = (cb) => {
bs.init({
ghostMode: false,
proxy: DEV_URL,
notify: false
});
cb();
};
let bsReload = (cb) => {
bs.reload();
cb();
};
browserSync.description = 'Initialize Browsersync and proxy: '.DEV_URL;
gulp.task('browser-sync', browserSync);
/* --- Tasks: CSS --- */
let styleTask = () => {
return gulp
.src([ './css/*.css', '!./css/*.min.css' ])
.pipe(autoprefixer())
.pipe(cleanCSS({ compatibility: 'ie9' }))
.pipe(rename({ suffix: '.min' }))
.pipe(lineEC())
.pipe(gulp.dest('./css/'));
};
styleTask.description = 'Minify styles';
gulp.task('styles', styleTask);
let loadStyleTask = () => {
return gulp.src('./css/*.css').pipe(bs.stream());
};
gulp.task('load-styles', gulp.series('styles', loadStyleTask));
/* --- Tasks: JS --- */
let scriptTask = () => {
return gulp
.src([ './js/*.js', '!./js/*.min.js' ])
.pipe(uglify({ output: { comments: 'some' } }))
.pipe(rename({ suffix: '.min' }))
.pipe(lineEC())
.pipe(gulp.dest('./js/'));
};
scriptTask.description = 'Minify JS files';
gulp.task('scripts', scriptTask);
gulp.task('load-scripts', gulp.series('scripts', bsReload));
/* --- Tasks: Watch files for any change --- */
let watchFiles = () => {
gulp.watch('./**/*.php', bsReload);
gulp.watch([ './css/**/*.css', '!./css/**/*.min.css' ], gulp.series('load-styles'));
gulp.watch([ './js/**/*.js', '!./js/**/*.min.js' ], gulp.series('load-scripts'));
};
watchFiles.description = 'Watch PHP, JS and CSS files for any change';
gulp.task('watch', gulp.series(browserSync, gulp.parallel('styles', 'scripts'), watchFiles));
/* --- Tasks: Default tasks --- */
gulp.task('default', gulp.series(init, gulp.parallel('styles', 'scripts'), browserSync));
/* --- Tasks: Build tasks --- */
gulp.task('build', gulp.series(init, gulp.parallel('styles', 'scripts')));