-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgulpfile.ts
110 lines (93 loc) · 3.36 KB
/
gulpfile.ts
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
/// <reference path="typings/tsd.d.ts" />
import gulp = require("gulp");
import del = require("del");
import browserSync = require("browser-sync");
var $ = require("gulp-load-plugins")();
var runSequence = require("run-sequence");
class Tasks {
[id: string]: gulp.ITaskCallback;
private build(): NodeJS.ReadWriteStream {
return this.compile();
}
private clean(): void {
del("./dest/**/*", void 0);
del("./dev/**/*", void 0);
}
private compile(): NodeJS.ReadWriteStream {
return gulp.src(["./src/ts/*.ts"])
.pipe($.sourcemaps.init())
.pipe($.typescript({
noEmitOnError: true,
noImplicitAny: true,
target: "ES5",
sortOutput: true
})).js
.pipe($.sourcemaps.write("."))
.pipe(gulp.dest("./dev/js/"))
.pipe($.size({ title: "compile" }));
}
private minify(): NodeJS.ReadWriteStream {
return gulp.src(["./dev/js/*.js", "!./dev/js/*.min.js"])
.pipe($.uglify({ preserveComments: "some" }))
.pipe($.rename({ extname: ".min.js" }))
.pipe(gulp.dest("./dest/js/"))
.pipe($.size({ title: "minify" }));
}
private html(): NodeJS.ReadWriteStream {
var assets = $.useref.assets();
return gulp.src(["./index.html"])
.pipe(assets)
.pipe($.if("*.js", $.uglify()))
.pipe($.if("*.css", $.csso()))
.pipe(assets.restore())
.pipe($.useref())
.pipe(gulp.dest("./dest/"))
.pipe($.size({ title: "html" }));
}
private styles(): NodeJS.ReadWriteStream {
return gulp.src(["./src/css/style.css"])
.pipe(gulp.dest("./dev/css/"));
}
private copy(): NodeJS.ReadWriteStream {
return gulp.src(["CNAME"])
.pipe(gulp.dest("./dest/"))
.pipe($.size({ title: "copy" }));
}
private lint(): NodeJS.ReadWriteStream {
return gulp.src("./src/ts/*.ts")
.pipe($.tslint())
.pipe($.tslint.report("verbose"));
}
private lint_noemit(): NodeJS.ReadWriteStream {
return gulp.src("./src/ts/*.ts")
.pipe($.tslint())
.pipe($.tslint.report("verbose"), {
emitError: false
});
}
private serve(): void {
browserSync({
notify: false,
logPrefix: "WSK",
server: ["."],
files: ["index.html", "./dev/css/*.css", "./dev/js/*.js"]
});
gulp.watch(["./src/**/*.css"], ["styles"]);
gulp.watch(["./src/ts/*.ts"], ["build", "lint:noemit"]);
}
private serve_dest(): void {
browserSync({
notify: false,
logPrefix: "WSK",
server: "dest"
});
}
public static register(): void {
gulp.task("default", ["clean"], cb => runSequence("styles", "lint", "build", ["html", "copy"], "minify", cb));
var instance = new Tasks();
for (var task in instance) {
gulp.task((<string>task).replace("_", ":"), instance[task].bind(instance));
}
}
}
Tasks.register();