-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
146 lines (123 loc) · 4.21 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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
// Gulp file to compile Tuxedo SCSS & JS files
const gulp = require('gulp');
const zip = require('gulp-zip');
const sourcemaps = require('gulp-sourcemaps');
const sass = require('gulp-sass');
const concat = require('gulp-concat');
const uglify = require('gulp-uglify');
const postcss = require('gulp-postcss');
const autoprefixer = require('autoprefixer');
const cssnano = require('cssnano');
const replace = require('gulp-replace');
const notify = require('gulp-notify');
const plumber = require('gulp-plumber');
const rtlcss = require('gulp-rtlcss');
const rename = require('gulp-rename');
const shell = require('gulp-shell');
/*
*
# npm update
# npm init
# npm install gulp gulp-zip gulp-sourcemaps gulp-sass gulp-concat gulp-uglify gulp-postcss autoprefixer cssnano gulp-replace gulp-notify gulp-plumber gulp-rtlcss gulp-rename gulp-shell -g
# npm install gulp gulp-zip gulp-sourcemaps gulp-sass gulp-concat gulp-uglify gulp-postcss autoprefixer cssnano gulp-replace gulp-notify gulp-plumber gulp-rtlcss gulp-rename gulp-shell --save-dev
*
*/
/*
===========================================================
=
= Change these constants according to your need
=
====================================================
*/
// #1 Script files path
const scriptpath = {
script_src: [
'./assets/src/js/*.js',
'!./assets/src/js/*.min.js',
],
script_dist: "./assets/build/js/",
}
// 2# SASS/SCSS file path
const sasspath = {
sass_src: ["./assets/src/scss/**/*.scss"],
sass_dist: "./assets/build/css/",
}
const compiled_sass_css_file_name = "tuxedo-public.min.css"; // what would you like to name your compiled CSS file
// #3 zips production ready files
const output_filename = 'tuxido-production.zip';
const files_folders = {
filefolders_src: [
// select all files & folders
'./*',
'./*/**',
// build tools
'!./.git',
'!./.gitignore',
'!./node_modules/**',
'!./gulpfile.js',
'!./package.json',
'!./package-lock.json',
'!./composer.json',
'!./composer.lock',
'!./sftp-config.json',
// source files
'!./assets/src/scss/**',
'!./assets/src/js/**',
],
production_zip_file_path: "./",
}
/*
===========================================================
=
= Define task (Almost no changes required)
=
====================================================
*/
gulp.task('scriptsTask', function () {
return gulp.src(scriptpath.script_src)
.pipe(rename({ suffix: '.min' }))
.pipe(uglify())
.pipe(gulp.dest(scriptpath.script_dist));
});
gulp.task('sassTask', function () {
var onError = function (err) {
notify.onError({
title: "Gulp",
subtitle: "Failure!",
message: "Error: <%= error.message %>",
sound: "Beep"
})(err);
this.emit('end');
};
return gulp.src(sasspath.sass_src)
.pipe(sourcemaps.init()) // initialize sourcemaps first
.pipe(plumber({ errorHandler: onError }))
.pipe(sass.sync().on('error', sass.logError))
.pipe(postcss([autoprefixer('last 2 version'), cssnano()])) // PostCSS plugins
.pipe(concat(compiled_sass_css_file_name))
.pipe(sourcemaps.write('.')) // write sourcemaps file in current directory
.pipe(gulp.dest(sasspath.sass_dist)); // put final CSS in dist folder
});
gulp.task('ZipProductionFiles', function () {
return gulp.src(files_folders.filefolders_src)
.pipe(zip(output_filename))
.pipe(gulp.dest(files_folders.production_zip_file_path))
});
//=========================================
// = C O M M A N D S =
//=========================================
//
// 1. Command: gulp (will compile static resources)
// 2. Command: gulp zipprod (will generate production ready files)
//
//=========================================
// Task 1 & 2: compiles static assets
gulp.task('default', gulp.series('scriptsTask', 'sassTask', (done) => {
gulp.watch(scriptpath.script_src, gulp.series('scriptsTask'));
gulp.watch(sasspath.sass_src, gulp.series('sassTask'));
done();
}));
// Task 3: zip production files
gulp.task('zipprod', gulp.series('ZipProductionFiles', (done) => {
done();
}));