solar/scripts/build.ts

64 lines
1.4 KiB
TypeScript

import fs from "fs";
let watch = false;
let debug = false;
process.argv.forEach(c => {
if (c.includes("--watch")) watch = true;
if (c.includes("--debug")) debug = true;
});
if (watch) {
console.log("Watch mode enabled");
const watcher = fs.watch(
"./src/",
{
recursive: true
},
async (event, filename) => {
if (event !== "change" && event !== "rename") return;
console.log("");
console.log("Rebuilding...");
await build();
}
);
}
async function build() {
console.log("Removing old build...");
if (fs.existsSync("build")) {
fs.rmSync("build", {
recursive: true,
force: true
});
}
console.log("Compiling scripts...");
const build = await Bun.build({
entrypoints: ["src/index.ts"],
target: "browser",
minify: true,
outdir: "./build/"
});
if (build.logs.length > 0) {
console.log("Build logs:", build.logs);
}
if (!build.success) return;
console.log("Adding userscript header...");
const userscriptHeader = fs
.readFileSync("scripts/userscriptHeader.js")
.toString();
const artifact = fs.readFileSync("build/index.js").toString();
fs.writeFileSync("build/Solar.user.js", userscriptHeader + artifact);
console.log("Done");
}
await build();