forked from lap00zza/9anime-Companion
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
123 lines (110 loc) · 3.53 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
// TODO: webpack preset env
let fs = require('fs');
let gulp = require("gulp");
let gutil = require("gulp-util");
let del = require("del");
let runSequence = require("run-sequence");
let webpack = require("webpack");
let sass = require("gulp-sass");
let zip = require("gulp-zip");
// For the version, we will just read from package.json.
// Version format is in Major Minor Patch. While building
// in Appveyor, we will append the Build number to it.
const version = JSON.parse(fs.readFileSync("package.json")).version;
let isAppveyor = false;
if ("APPVEYOR" in process.env && process.env.APPVEYOR === "True") {
isAppveyor = true;
}
/* --- Common Tasks --- */
gulp.task("clean_dist", function () {
return del(["dist/**/*"]);
});
gulp.task("copy_vendor_files", function () {
return gulp.src([
"node_modules/bootstrap/dist/js/bootstrap.js",
"node_modules/jquery/dist/jquery.js",
"node_modules/popper.js/dist/umd/popper.js",
"node_modules/toastr/toastr.js",
"node_modules/x2js/x2js.js",
])
.pipe(gulp.dest("src/vendor"));
});
gulp.task("sass", function () {
return gulp.src("src/sass/**/*.sass")
.pipe(sass())
.pipe(gulp.dest("src/build/css"));
});
gulp.task("webpack", function (callback) {
webpack(require("./webpack.config"), function (err, stats) {
if (err) throw new gutil.PluginError("webpack", err);
gutil.log("[webpack]", stats.toString());
callback();
});
});
/* --- Chrome Related Tasks --- */
gulp.task("copy_chromium_files", ["copy_vendor_files"], function () {
return gulp.src([
"LICENSE",
"!src/templates/**.*",
"src/**/*.{js,bundle.js,png,css,svg,html,jpg}",
"platform/chromium/**/*"
])
.pipe(gulp.dest("dist/chromium"));
});
// zips up the files in dist/chromium, which means
// this should be called once there is some files
// inside dist/chromium, i.e. towards the end of
// the default task.
gulp.task("zip_chrome", function () {
let fileName = `9anime_Companion-chrome-${version}.zip`;
if (isAppveyor) {
fileName = `9anime_Companion-chrome-${version}.${process.env.APPVEYOR_BUILD_NUMBER}.zip`;
}
gulp.src("dist/chromium/**/*", {nodir: true})
.pipe(zip(fileName))
.pipe(gulp.dest("dist"));
});
/* --- Firefox Related Tasks --- */
gulp.task("copy_firefox_files", ["copy_vendor_files"], function () {
return gulp.src([
"LICENSE",
"!src/templates/**.*",
"src/**/*.{js,bundle.js,png,css,svg,html,jpg}",
"platform/firefox/**/*"
])
.pipe(gulp.dest("dist/firefox"));
});
gulp.task("zip_firefox", function () {
let fileName = `9anime_Companion-firefox-${version}.xpi`;
if (isAppveyor) {
fileName = `9anime_Companion-firefox-${version}.${process.env.APPVEYOR_BUILD_NUMBER}.xpi`;
}
gulp.src("dist/firefox/**/*", {nodir: true})
.pipe(zip(fileName))
.pipe(gulp.dest("dist"));
});
/* --- Utility Tasks --- */
gulp.task("quick:html_and_sass", ["sass"], function () {
return gulp.src([
"!src/templates/**.*",
"src/**/*.html",
"src/**/*.css",
])
.pipe(gulp.dest("dist/chromium"))
.pipe(gulp.dest("dist/firefox"));
});
/* --- DEFAULT TASK --- */
// The default gulp task that runs when we
// just type `gulp`
gulp.task("default", function (callback) {
runSequence(
"clean_dist",
"webpack",
"sass",
"copy_chromium_files",
"zip_chrome",
"copy_firefox_files",
"zip_firefox",
callback
);
});