-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
135 lines (118 loc) · 4.41 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
const gulp = require("gulp")
// var func = require('./compiler/helpers');
const sass = require("gulp-sass")(require("sass"))
const sourcemaps = require("gulp-sourcemaps")
const purgecss = require("gulp-purgecss")
const htmlmin = require("gulp-htmlmin")
const concat = require("gulp-concat")
const minify = require("gulp-minify")
const rename = require("gulp-rename")
const strip = require("gulp-strip-comments")
const uglify = require("gulp-uglify-es").default
// Node Modules JS to build.js Bundle
// Reference : https://www.toptal.com/javascript/optimize-js-and-css-with-gulp
const node_path = "node_modules/"
const asset_path = "src/assets/js/"
const srcJS = [node_path + "jquery/dist/jquery.min.js", asset_path + "gsap.min.js", asset_path + "ScrollToPlugin.min.js", asset_path + "ScrollTrigger.min.js", asset_path + "smooth-scrollbar.js", asset_path + "swiper-bundle.min.js", asset_path + "imagesloaded.pkgd.min.js", asset_path + "isotope.pkgd.min.js", asset_path + "packery-mode.pkgd.min.js", asset_path + "lightgallery-all.min.js", asset_path + "jquery.mousewheel.min.js"]
gulp.task("pack-js", function () {
return gulp.src(srcJS).pipe(concat("bundle.js")).pipe(minify()).pipe(gulp.dest("public/assets/js"))
})
const deferJS = [node_path + "jquery-validation/dist/jquery.validate.min.js", "public/assets/js/contact.js"]
gulp.task("defer-js", function () {
return gulp.src(deferJS).pipe(concat("defer.js")).pipe(minify()).pipe(gulp.dest("public/assets/js"))
})
const htmlPartial = require("gulp-html-partial")
gulp.task("html", function () {
return gulp
.src(["src/**/*.html", "!src/partials/**/*.html"])
.pipe(strip())
.pipe(
htmlPartial({
basePath: "src/partials/",
}),
)
.pipe(
htmlmin({
collapseWhitespace: true,
removeComments: true,
}),
)
.pipe(gulp.dest("public"))
})
// SCSS to CSS
gulp.task("scss", function () {
return gulp
.src("src/assets/scss/**/*.scss")
.pipe(sourcemaps.init())
.pipe(
sass({
includePaths: ["node_modules"],
outputStyle: "compressed",
}).on("error", sass.logError),
)
.pipe(sourcemaps.write("."))
.pipe(gulp.dest("public/assets/css/"))
})
// To Remove Unused CSS
gulp.task("purgecss", () => {
return gulp
.src(["public/assets/css/main.css", "!public/assets/css/main.min.css"])
.pipe(
rename({
suffix: ".min",
}),
)
.pipe(
purgecss({
content: ["public/**/*.html", "public/**/*.js"],
css: [], // css
whitelist: [".active", ".in", ".out"],
}),
)
.pipe(gulp.dest("public/assets/css"))
})
gulp.task("copy-img", function () {
return gulp.src("src/assets/img/**/*.*").pipe(gulp.dest("./public/assets/img/"))
})
// Copy Fonts
gulp.task("copy-font", function () {
return gulp.src("src/assets/font/**/*.*").pipe(gulp.dest("./public/assets/font/"))
})
// Copy Videos
gulp.task("copy-vid", function () {
return gulp.src("src/assets/vids/**/*.*").pipe(gulp.dest("./public/assets/vids/"))
})
// Copy Fonts
gulp.task("copy-src-js", function () {
return gulp.src("src/assets/js/**/*.*").pipe(strip()).pipe(uglify()).pipe(gulp.dest("./public/assets/js/"))
})
// Copy Actions
gulp.task("copy-actions", function () {
return gulp.src("src/actions/**/*.*").pipe(gulp.dest("./public/actions/"))
})
const copySrc = ["src/sitemap.xml", "src/robots.txt"]
gulp.task("copy", function () {
return gulp.src(copySrc).pipe(gulp.dest("./public/"))
})
// Build Complete Public Folder
// gulp.task('default', gulp.series('html','copy-src-js','copy-actions','pack-js','copy-img','copy-font','scss'));
gulp.task("default", gulp.series("html", "copy-src-js", "pack-js", "copy-vid", "copy-img", "copy-font", "scss", "purgecss", "defer-js", "copy"))
// Watch Task to Update Files
gulp.task("watch", function () {
gulp.watch("src/assets/js/**/*.js", gulp.series("copy-src-js"))
gulp.watch("src/actions/**/*.php", gulp.series("copy-actions"))
gulp.watch("src/assets/scss/**/*.scss", gulp.series("scss", "purgecss"))
// gulp.watch('src/assets/scss/**/*.scss', gulp.series('scss'));
gulp.watch("src/assets/css/main.css", gulp.series("purgecss"))
gulp.watch("src/assets/img/**/*.*", gulp.series("copy-img"))
gulp.watch("src/assets/font/**/*.*", gulp.series("copy-font"))
gulp.watch("src/**/*.html", gulp.series("html"))
gulp.watch("gulpfile.js", gulp.series("pack-js"))
gulp.watch("gulpfile.js", gulp.series("defer-js"))
})
// Local Server
const gls = require("gulp-live-server")
gulp.task("localhost", function () {
const server = gls.static("public", 8081)
server.start()
})