This repository has been archived by the owner on Aug 26, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 20
/
gulpfile.js
121 lines (97 loc) · 2.48 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
var gulp = require('gulp');
var del = require('del');
var cache = require('gulp-cached');
var argv = require('yargs').argv;
var uglify = require('gulp-uglify');
var pump = require('pump');
var merge = require('gulp-merge-json');
var cleanCSS = require('gulp-clean-css');
var htmlmin = require('gulp-htmlmin');
var cache = require('gulp-cached');
var replace = require('gulp-replace');
var autoprefixer = require('gulp-autoprefixer');
var platform = argv.platform == "firefox" ? "firefox" : "chrome";
var srcBase = "src/";
var deps = require("./" + srcBase + "deps/" + platform + ".json");
var distBase = "build/" + platform + "/";
var src = {
css: srcBase + "css/**/*",
html: srcBase + "html/**/*",
img: srcBase + "img/**/*",
js: srcBase + "js/**/*",
lib: srcBase + "lib/**/*",
manifest: srcBase + "manifest/**/*"
};
var srcKeys = Object.keys(src);
gulp.task("del", function(cb) {
del.sync(distBase);
cb();
});
gulp.task("html", function(cb) {
pump([
gulp.src(src.html),
cache('html'),
replace('{%CSS%}', function(match) {
return deps.css ? deps.css.map(function(d) { return `<link href="${d}" rel="stylesheet">`}).join("") : "";
}),
replace('{%JS%}', function(match) {
return deps.js ? deps.js.map(function(d) { return `<script src="${d}"></script>`}).join("") : "";
}),
htmlmin({collapseWhitespace: true}),
gulp.dest(distBase)
], cb);
});
gulp.task("img", function(cb) {
pump([
gulp.src(src.img),
cache('img'),
gulp.dest(distBase + "img")
], cb);
});
gulp.task("css", function(cb) {
pump([
gulp.src(src.css),
cache('css'),
autoprefixer({
browsers: ['last 2 versions'],
cascade: false
}),
cleanCSS(),
gulp.dest(distBase + "css")
], cb);
});
gulp.task("js", function(cb) {
pump([
gulp.src(src.js),
cache('js'),
replace('{%PLATFORM%}', function(match) {
return platform;
}),
replace('{%CLIENT_ID%}', function(match) {
return argv.production ? deps.prod_client_id : deps.dev_client_id;
}),
uglify(),
gulp.dest(distBase + "js")
], cb);
});
gulp.task("lib", function(cb) {
pump([
gulp.src(src.lib),
cache('lib'),
gulp.dest(distBase + "lib")
], cb);
});
gulp.task("manifest", function(cb) {
pump([
gulp.src([srcBase + "manifest/" + platform + ".json", srcBase + "manifest/base.json"]),
merge({
fileName: "manifest.json",
}),
gulp.dest(distBase)
], cb);
});
gulp.task("default", ["del"].concat(srcKeys), function() {
srcKeys.forEach(function(k) {
gulp.watch(src[k], [k]);
});
});