/
gulpfile.js
101 lines (97 loc) · 2.71 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
const Gulp = require("gulp"),
Connect = require("gulp-connect"),
Nodemon = require("gulp-nodemon"),
Less = require("gulp-less"),
Concat = require("gulp-concat"),
UglifyJS = require("gulp-uglify"),
MinifyCSS = require("gulp-clean-css"),
MinHtml = require("gulp-htmlmin"),
Replace = require("gulp-replace"),
Compress = require("gulp-zip"),
Moment = require("moment"),
Delete = require("del");
/** gulp */
Gulp.task("default", () => {
// less
const lessSource = [
"./source/general/**/*.less",
"./source/snippets/**/*.less"
];
const lessTarget = "./source/";
const combine = () => {
Gulp.src(lessSource)
.pipe(Concat("bundle.css"))
.pipe(Less())
.pipe(Gulp.dest(lessTarget));
};
combine();
Gulp.watch(lessSource, combine);
// nodemon
const serverSource = "./test/server.js"
Nodemon({
script: serverSource,
execMap: {js: "node --harmony"},
env: {"NODE_ENV": "development"}
});
// livereload
const livereloadSource = [
"./source/**/*.js",
"./source/bundle.css",
"./source/**/*.html",
];
Connect.server({
root: "source",
port: 5001,
livereload: true
});
Gulp.watch(livereloadSource , () => {
Gulp.src(livereloadSource).pipe(
Connect.reload()
);
});
});
/** gulp build */
Gulp.task("build", () => {
const source = "./source/";
const target = "./build/";
// html
Gulp.src([source + "snippets/**/*.html"])
.pipe(MinHtml({collapseWhitespace: true}))
.pipe(Gulp.dest(target + "/snippets"));
// update index.html /<!--Start-->[\s\S]*<!--End-->/g
Gulp.src([source + "index.html"])
.pipe(Replace("bundles/scripts", "bundles/scripts.min"))
.pipe(Replace("bundles/styles", "bundles/styles.min"))
.pipe(Gulp.dest(target));
// css
Gulp.src([source + "snippets/**/*.less"])
.pipe(Concat("styles.min.css"))
.pipe(Less())
.pipe(MinifyCSS({compatibility: "ie8"}))
.pipe(Gulp.dest(target + "bundles"));
// javascript
Gulp.src([source + "snippets/**/*.js", source + "app.js"])
.pipe(Concat("scripts.min.js"))
.pipe(UglifyJS())
.pipe(Gulp.dest(target + "bundles"));
// image & fonts
Gulp.src([source + "assets/**/*"])
.pipe(Gulp.dest(target + "assets"));
// library
Gulp.src([source + "libraries/**/*"])
.pipe(Gulp.dest(target + "/libraries"));
});
/** gulp release */
Gulp.task("release", ["build"], () => {
let releaseTime = Moment().format("YYYY.MM.DD HH:mm:ss");
let releaseName = "release " + releaseTime + ".zip";
return Gulp.src("./build/**/*")
.pipe(Compress(releaseName))
.pipe(Gulp.dest("./release"));
});
/** gulp clean */
Gulp.task("clean", () => {
Delete([
"./release/**/*", "./build/**/*"
]);
});