diff --git a/gulpfile.cjs b/gulpfile.cjs index 7b05233..293775b 100644 --- a/gulpfile.cjs +++ b/gulpfile.cjs @@ -5,122 +5,134 @@ const tsProject = ts.createProject("tsconfig.json"); const argv = require("yargs").argv; const rimraf = require("rimraf"); const plumber = require("gulp-plumber"); -const sourcemaps = require('gulp-sourcemaps'); -const fs=require("fs"); +const sourcemaps = require("gulp-sourcemaps"); +const fs = require("fs"); const swcOptions = { -jsc: { - parser: { - syntax: "typescript", - tsx: false, - decorators: true, - dynamicImport: true, - }, - transform: { - react: { - runtime: "automatic", - }, - }, - target: "es2022", - loose: false, - externalHelpers: false, - keepClassNames: true, - }, - module: { - type: "es6", - strict: true, - strictMode: true, - lazy: false, - noInterop: false, - }, - sourceMaps: true, - minify: false, + jsc: { + parser: { + syntax: "typescript", + tsx: false, + decorators: true, + dynamicImport: true, + }, + transform: { + react: { + runtime: "automatic", + }, + }, + target: "es2022", + loose: false, + externalHelpers: false, + keepClassNames: true, + }, + module: { + type: "es6", + strict: true, + strictMode: true, + lazy: false, + noInterop: false, + }, + sourceMaps: true, + minify: false, }; - - -gulp.task('watch', function () { - gulp.watch('./src', gulp.series("default")); - gulp.watch('./translations', gulp.series("default")); -}, {debounceDelay: 10}); +gulp.task( + "watch", + function () { + gulp.watch("./src", gulp.series("default")); + gulp.watch("./translations", gulp.series("default")); + }, + {debounceDelay: 10}, +); // Clean task to delete the dist directory gulp.task("clean", (cb) => { - return rimraf.rimraf("dist").then(cb()); - }); - const exec = require('child_process').exec; - // Task to compile TypeScript files using SWC - gulp.task("scripts", async () => { - if (argv.swc) { - return gulp - .src("src/**/*.ts") - .pipe(sourcemaps.init()) - .pipe(plumber()) // Prevent pipe breaking caused by errors - .pipe(swc(swcOptions)) - .pipe(sourcemaps.write('.')) - .pipe(gulp.dest("dist")); - } else if(argv.bunswc){ - return await new Promise(ret=>{ - exec("bun swc --strip-leading-paths ./src -s -d ./dist/ -C jsc.target=es2022").on('exit', function (code) { - ret(); - }); - }) - }else { - console.warn("[WARN] Using TSC compiler, will be slower than SWC"); - return gulp - .src("src/**/*.ts") - .pipe(sourcemaps.init()) - .pipe(plumber()) // Prevent pipe breaking caused by errors - .pipe(tsProject()) - .pipe(sourcemaps.write('.')) - .pipe(gulp.dest("dist")); - } + return rimraf.rimraf("dist").then(cb()); +}); +const exec = require("child_process").exec; +// Task to compile TypeScript files using SWC +gulp.task("scripts", async () => { + if (argv.swc) { + return gulp + .src("src/**/*.ts") + .pipe(sourcemaps.init()) + .pipe(plumber()) // Prevent pipe breaking caused by errors + .pipe(swc(swcOptions)) + .pipe(sourcemaps.write(".")) + .pipe(gulp.dest("dist")); + } else if (argv.bunswc) { + return await new Promise((ret) => { + exec("bun swc --strip-leading-paths ./src -s -d ./dist/ -C jsc.target=es2022").on( + "exit", + function (code) { + ret(); + }, + ); + }); + } else { + console.warn("[WARN] Using TSC compiler, will be slower than SWC"); + return gulp + .src("src/**/*.ts") + .pipe(sourcemaps.init()) + .pipe(plumber()) // Prevent pipe breaking caused by errors + .pipe(tsProject()) + .pipe(sourcemaps.write(".")) + .pipe(gulp.dest("dist")); + } }); // Task to copy HTML files gulp.task("copy-html", () => { -return gulp - .src("src/**/*.html") - .pipe(plumber()) // Prevent pipe breaking caused by errors - .pipe(gulp.dest("dist")); + return gulp + .src("src/**/*.html") + .pipe(plumber()) // Prevent pipe breaking caused by errors + .pipe(gulp.dest("dist")); }); gulp.task("copy-translations", () => { -let langs=fs.readdirSync("translations"); -langs=langs.filter((e)=>e!=="qqq.json"); -const langobj={}; -for(const lang of langs){ - const json=JSON.parse(fs.readFileSync("translations/"+lang).toString()); - langobj[lang]=json.readableName; -} -if(!fs.existsSync("dist/webpage/translations")) fs.mkdirSync("dist/webpage/translations") -fs.writeFileSync("dist/webpage/translations/langs.js",`const langs=${JSON.stringify(langobj)};export{langs}`); -return gulp - .src("translations/*.json") - .pipe(plumber()) // Prevent pipe breaking caused by errors - .pipe(gulp.dest("dist/webpage/translations")); + let langs = fs.readdirSync("translations"); + langs = langs.filter((e) => e !== "qqq.json"); + const langobj = {}; + for (const lang of langs) { + const json = JSON.parse(fs.readFileSync("translations/" + lang).toString()); + langobj[lang] = json.readableName; + } + if (!fs.existsSync("dist/webpage/translations")) fs.mkdirSync("dist/webpage/translations"); + fs.writeFileSync( + "dist/webpage/translations/langs.js", + `const langs=${JSON.stringify(langobj)};export{langs}`, + ); + return gulp + .src("translations/*.json") + .pipe(plumber()) // Prevent pipe breaking caused by errors + .pipe(gulp.dest("dist/webpage/translations")); }); // Task to copy other static assets (e.g., CSS, images) gulp.task("copy-assets", () => { -return gulp - .src([ - "src/**/*.css", - "src/**/*.bin", - "src/**/*.ico", - "src/**/*.json", - "src/**/*.js", - "src/**/*.png", - "src/**/*.jpg", - "src/**/*.jpeg", - "src/**/*.webp", - "src/**/*.gif", - "src/**/*.svg", - "src/**/*.jasf", - ],{encoding:false}) - .pipe(plumber()) // Prevent pipe breaking caused by errors - .pipe(gulp.dest("dist")); + return gulp + .src( + [ + "src/**/*.css", + "src/**/*.bin", + "src/**/*.ico", + "src/**/*.json", + "src/**/*.js", + "src/**/*.png", + "src/**/*.jpg", + "src/**/*.jpeg", + "src/**/*.webp", + "src/**/*.gif", + "src/**/*.svg", + "src/**/*.jasf", + "src/**/*.txt", + ], + {encoding: false}, + ) + .pipe(plumber()) // Prevent pipe breaking caused by errors + .pipe(gulp.dest("dist")); }); // Default task to run all tasks gulp.task( -"default", -gulp.series("clean", gulp.parallel("scripts", "copy-html", "copy-assets"), "copy-translations") + "default", + gulp.series("clean", gulp.parallel("scripts", "copy-html", "copy-assets"), "copy-translations"), );