-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgulpfile.js
128 lines (111 loc) · 3.23 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
const { series, parallel, src, dest } = require("gulp");
const clean = require("gulp-clean");
const sass = require("gulp-sass")(require("sass"));
const sourcemaps = require("gulp-sourcemaps");
const autoprefixer = require("gulp-autoprefixer");
const cleanCSS = require("gulp-clean-css");
const minify = require("gulp-minify");
const htmlmin = require("gulp-htmlmin");
const replace = require("gulp-replace");
const versionNumber = require("gulp-version-number");
function cleanAll() {
return src(["css/", "publish/", "dist/"], { allowEmpty: true })
.pipe(clean({ force: true }));
}
function cssTranspile() {
return src("./sass/main.scss")
.pipe(sourcemaps.init())
.pipe(sass({ "outputStyle": "expanded" }).on("error", sass.logError))
.pipe(sourcemaps.write("."))
.pipe(dest("./css/"));
}
function cssMinify() {
return src("./css/*.css")
.pipe(sourcemaps.init())
.pipe(autoprefixer())
.pipe(cleanCSS())
.pipe(sourcemaps.write("."))
.pipe(dest("publish/css/"));
}
function jsTranspile() {
return src(["./js/*.js", "./node_modules/mustache/mustache.js"])
.pipe(dest("publish/js"));
}
function jsBundle(cb) {
cb();
}
function jsMinify() {
return src("publish/js/*.js")
.pipe(sourcemaps.init())
.pipe(minify({
ext: {
src: "-debug.js",
min: ".js"
},
compress: true,
mangle: true
}))
.pipe(sourcemaps.write("."))
.pipe(dest("publish/js"));
}
function html() {
const versionConfig = {
'value': '%MDS%',
'append': {
'key': 'v',
'to': ['css', 'js'],
},
};
return src("./*.html")
.pipe(htmlmin({ collapseWhitespace: true }))
.pipe(versionNumber(versionConfig))
.pipe(dest("publish/"));
}
function setPublishDate() {
var today = new Date();
return src(["publish/*"])
.pipe(replace(/@Publish_Date_Format/g, today.toISOString()))
.pipe(replace(/@Publish_Date/g, today.toLocaleString()))
.pipe(dest("publish/"));
}
function changeMustachePath() {
return src(["publish/*"])
.pipe(replace(/node_modules\/mustache\/mustache.min.js/g, "./js/mustache.js"))
.pipe(dest("publish/"));
}
function copySEO() {
return src(["./sitemap.xml", "./robots.txt"])
.pipe(dest("publish/"));
}
function copyAssets() {
return src(["./images/**/*"], { base: "./" })
.pipe(dest("publish/"));
}
function copyFavicon() {
return src(["./images/favicon/favicon.ico"])
.pipe(dest("publish"));
}
function preparePackage() {
return src(["LICENSE", "./docs/*.png"], { base: "./" })
.pipe(dest("dist"));
}
function copyArtifacts() {
return src(["./docs/package.json", "./publish/css/main.css", "./docs/README.md"])
.pipe(replace("/*# sourceMappingURL=main.css.map */", ""))
.pipe(dest("dist"));
}
exports.default = series(
cleanAll,
parallel(
cssTranspile,
series(jsTranspile, jsBundle)
),
parallel(cssMinify, jsMinify),
html,
setPublishDate,
changeMustachePath,
copySEO,
copyAssets,
copyFavicon,
parallel(preparePackage, copyArtifacts)
);