magnetar/fe_calckey/frontend/gulpfile.js

88 lines
2.1 KiB
JavaScript

/**
* Gulp tasks
*/
import fs from "fs";
import gulp from "gulp";
import replace from "gulp-replace";
import terser from "gulp-terser";
import cssnano from "gulp-cssnano";
import rename from "gulp-rename";
import locales from "./locales/index.ts";
import meta from "./package.json" assert { type: "json" };
gulp.task("copy:client:fonts", () =>
gulp
.src("./client/node_modules/three/examples/fonts/**/*")
.pipe(gulp.dest("./built/_client_dist_/fonts/"))
);
gulp.task("copy:client:locales", (cb) => {
fs.mkdirSync("./built/_client_dist_/locales", { recursive: true });
const v = { _version_: meta.version };
for (const [lang, locale] of Object.entries(locales)) {
fs.writeFileSync(
`./built/_client_dist_/locales/${lang}.${meta.version}.json`,
JSON.stringify({ ...locale, ...v }),
"utf-8"
);
}
cb();
});
gulp.task("build:client:boot_script", () => {
return gulp
.src(["./assets-be/boot.template.js"])
.pipe(replace("LANGS", JSON.stringify(Object.keys(locales))))
.pipe(
terser({
toplevel: true,
})
)
.pipe(rename("boot.js"))
.pipe(gulp.dest("./assets-be/template"));
});
gulp.task("build:client:boot_style", () => {
return gulp
.src(["./assets-be/style.template.css"])
.pipe(
cssnano({
zindex: false,
})
)
.pipe(rename("style.css"))
.pipe(gulp.dest("./assets-be/template"));
});
gulp.task("build:client:copy_twemoji", () => {
return gulp
.src(["node_modules/@discordapp/twemoji/dist/svg/*.svg"])
.pipe(gulp.dest("./assets-be/twemoji"));
});
gulp.task(
"build",
gulp.parallel(
"copy:client:locales",
"copy:client:fonts",
"build:client:boot_script",
"build:client:boot_style",
"build:client:copy_twemoji"
)
);
gulp.task("default", gulp.task("build"));
gulp.task("watch", () => {
gulp.watch(
["./packages/*/src/**/*"],
{ ignoreInitial: false },
gulp.task("build")
);
});