2020-11-02 14:25:25 +08:00
|
|
|
const { task, src, dest, series, watch } = require("gulp");
|
2022-02-07 07:25:13 +08:00
|
|
|
// const axios = require("axios");
|
2020-11-13 15:12:53 +08:00
|
|
|
const browserify = require("browserify");
|
|
|
|
const babelify = require("babelify");
|
2020-11-02 14:25:25 +08:00
|
|
|
const concat = require("gulp-concat");
|
|
|
|
const del = require("del");
|
2020-11-13 15:12:53 +08:00
|
|
|
const source = require("vinyl-source-stream");
|
|
|
|
const buffer = require("vinyl-buffer");
|
2020-11-02 14:25:25 +08:00
|
|
|
const vinylPaths = require("vinyl-paths");
|
2022-02-07 07:25:13 +08:00
|
|
|
const eslint = require("gulp-eslint-new");
|
2021-06-30 01:55:59 +08:00
|
|
|
var sass = require("gulp-sass")(require("dart-sass"));
|
2022-01-16 03:34:42 +08:00
|
|
|
const replace = require("gulp-replace");
|
2022-01-30 04:00:08 +08:00
|
|
|
const uglify = require("gulp-uglify");
|
2022-02-01 20:34:05 +08:00
|
|
|
const through2 = require("through2");
|
2021-06-30 01:55:59 +08:00
|
|
|
// sass.compiler = require("dart-sass");
|
2020-11-02 14:25:25 +08:00
|
|
|
|
2022-02-07 07:25:13 +08:00
|
|
|
let eslintConfig = ".eslintrc.json";
|
2020-11-13 15:12:53 +08:00
|
|
|
|
2022-02-08 01:16:38 +08:00
|
|
|
task("clean", function () {
|
2022-02-08 01:35:09 +08:00
|
|
|
return src(["./public/"], { allowEmpty: true }).pipe(vinylPaths(del));
|
2022-02-08 01:16:38 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
task("lint", function () {
|
2022-02-08 01:35:09 +08:00
|
|
|
let filelist = ["./src/js/**/*.js", "./static/**/*.json"];
|
2022-02-08 01:16:38 +08:00
|
|
|
return src(filelist)
|
|
|
|
.pipe(eslint(eslintConfig))
|
|
|
|
.pipe(eslint.format())
|
|
|
|
.pipe(eslint.failAfterError());
|
|
|
|
});
|
|
|
|
|
2020-11-13 15:12:53 +08:00
|
|
|
task("browserify", function () {
|
|
|
|
const b = browserify({
|
2022-02-08 01:35:09 +08:00
|
|
|
entries: "./src/js/index.js",
|
2020-11-13 15:12:53 +08:00
|
|
|
//a source map isn't very useful right now because
|
|
|
|
//the source files are concatenated together
|
|
|
|
debug: false,
|
|
|
|
});
|
|
|
|
return b
|
|
|
|
.transform(
|
|
|
|
babelify.configure({
|
|
|
|
presets: ["@babel/preset-env"],
|
|
|
|
plugins: ["@babel/transform-runtime"],
|
|
|
|
})
|
|
|
|
)
|
|
|
|
.bundle()
|
|
|
|
.pipe(source("monkeytype.js"))
|
|
|
|
.pipe(buffer())
|
2022-01-30 04:00:08 +08:00
|
|
|
.pipe(
|
|
|
|
uglify({
|
|
|
|
mangle: false,
|
|
|
|
})
|
|
|
|
)
|
2022-02-08 01:35:09 +08:00
|
|
|
.pipe(dest("./public/js"));
|
2020-11-13 15:12:53 +08:00
|
|
|
});
|
|
|
|
|
2022-02-08 01:16:38 +08:00
|
|
|
task("static", function () {
|
2022-02-08 01:35:09 +08:00
|
|
|
return src("./static/**/*", { dot: true }).pipe(dest("./public/"));
|
2020-11-13 15:12:53 +08:00
|
|
|
});
|
|
|
|
|
2022-02-08 01:16:38 +08:00
|
|
|
task("sass", function () {
|
|
|
|
return src("./src/sass/*.scss")
|
|
|
|
.pipe(concat("style.scss"))
|
|
|
|
.pipe(sass({ outputStyle: "compressed" }).on("error", sass.logError))
|
2022-02-08 01:35:09 +08:00
|
|
|
.pipe(dest("public/css"));
|
2020-11-03 09:53:53 +08:00
|
|
|
});
|
|
|
|
|
2022-01-16 03:34:42 +08:00
|
|
|
task("updateSwCacheName", function () {
|
2022-01-16 03:53:14 +08:00
|
|
|
let date = new Date();
|
|
|
|
let dateString =
|
|
|
|
date.getFullYear() +
|
|
|
|
"-" +
|
|
|
|
(date.getMonth() + 1) +
|
|
|
|
"-" +
|
|
|
|
date.getDate() +
|
|
|
|
"-" +
|
|
|
|
date.getHours() +
|
|
|
|
"-" +
|
|
|
|
date.getMinutes() +
|
|
|
|
"-" +
|
|
|
|
date.getSeconds();
|
2022-01-31 22:29:26 +08:00
|
|
|
return src(["static/sw.js"])
|
2022-01-16 03:34:42 +08:00
|
|
|
.pipe(
|
|
|
|
replace(
|
|
|
|
/const staticCacheName = .*;/g,
|
2022-01-16 03:53:14 +08:00
|
|
|
`const staticCacheName = "sw-cache-${dateString}";`
|
2022-01-16 03:34:42 +08:00
|
|
|
)
|
|
|
|
)
|
2022-02-01 20:34:05 +08:00
|
|
|
.pipe(
|
|
|
|
through2.obj(function (file, enc, cb) {
|
|
|
|
var date = new Date();
|
|
|
|
file.stat.atime = date;
|
|
|
|
file.stat.mtime = date;
|
|
|
|
cb(null, file);
|
|
|
|
})
|
|
|
|
)
|
2022-02-08 01:35:09 +08:00
|
|
|
.pipe(dest("./public/"));
|
2022-01-16 03:34:42 +08:00
|
|
|
});
|
|
|
|
|
2020-11-13 15:12:53 +08:00
|
|
|
task(
|
|
|
|
"compile",
|
2022-02-08 01:35:09 +08:00
|
|
|
series("lint", "browserify", "static", "sass", "updateSwCacheName")
|
2020-11-13 15:12:53 +08:00
|
|
|
);
|
2020-11-03 09:53:53 +08:00
|
|
|
|
|
|
|
task("watch", function () {
|
2022-02-08 01:35:09 +08:00
|
|
|
watch(["./static/**/*", "./src/**/*", "gulpfile.js"], series("compile"));
|
2020-11-03 09:53:53 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
task("build", series("clean", "compile"));
|