diff options
author | metamuffin <metamuffin@disroot.org> | 2022-09-08 13:31:18 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-09-08 13:31:18 +0200 |
commit | cd255848196da0d8732d31049cc0f98388205a30 (patch) | |
tree | 3813003cc153210d24a7819c0dce8d68b26867a2 /client-web/watch-builder.ts | |
parent | 88241946e3144fede5c86f98d00bb723c1cc2761 (diff) | |
download | keks-meet-cd255848196da0d8732d31049cc0f98388205a30.tar keks-meet-cd255848196da0d8732d31049cc0f98388205a30.tar.bz2 keks-meet-cd255848196da0d8732d31049cc0f98388205a30.tar.zst |
more code
Diffstat (limited to 'client-web/watch-builder.ts')
-rw-r--r-- | client-web/watch-builder.ts | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/client-web/watch-builder.ts b/client-web/watch-builder.ts new file mode 100644 index 0000000..05871e1 --- /dev/null +++ b/client-web/watch-builder.ts @@ -0,0 +1,36 @@ + +// `emit` uses fetch to *download* was, that is just stupid +// import { bundle } from "https://deno.land/x/emit@0.1.1/mod.ts"; + +// instead, lets run `deno bundle` manually + +async function bundle(entry: string, options: { compilerOptions: { checkJs: boolean } }) { + const proc = Deno.run({ cmd: ["deno", "bundle", options.compilerOptions.checkJs ? "--check" : "--no-check", "--unstable", entry], stdout: "piped" }) + const out = await proc.output() + const code = new TextDecoder().decode(out) + return { code } +} + +let refresh_needed = false +let refresh_pending = false +async function refresh() { + refresh_needed = true + if (refresh_pending) return + refresh_needed = false + refresh_pending = true + + try { + const { code } = await bundle("source/index.ts", { compilerOptions: { checkJs: false } }) + await Deno.writeTextFile("public/assets/bundle.js", code) + } catch (e) { console.error(e) } + + refresh_pending = false + if (refresh_needed) refresh() +} + +refresh() +for await (const event of Deno.watchFs("source")) { + if (event.kind == "modify" || event.kind == "create") { + refresh() + } +} |