diff --git a/.github/workflows/build-and-deploy.yaml b/.github/workflows/build-and-deploy.yaml index 050e08f..02e8f47 100644 --- a/.github/workflows/build-and-deploy.yaml +++ b/.github/workflows/build-and-deploy.yaml @@ -60,4 +60,4 @@ jobs: with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - command: pages deploy --project-name=armorynodewebsite + command: pages deploy static --project-name=armorynodewebsite diff --git a/build.ts b/build.ts index 7e96b37..be3dc98 100644 --- a/build.ts +++ b/build.ts @@ -2,9 +2,20 @@ import { compileToString as ElmCompile } from "https://deno.land/x/deno_elm_comp import { minify } from "npm:terser"; import * as sass from "npm:sass"; -const maxRetries = 3; +async function createDirectories() { + await Deno.mkdir("./static/css", { recursive: true }).catch(error => { + if (error instanceof Deno.errors.AlreadyExists) + return; + throw error; + }); + await Deno.mkdir("./static/js", { recursive: true }).catch(error => { + if (error instanceof Deno.errors.AlreadyExists) + return; + throw error; + }); +} -async function compileAndMinifyElm(retries: number = 0) { +async function compileAndMinifyElm() { try { const compiledJs = await ElmCompile("./src/Main.elm", { mode: "optimize" }); const minifiedJs = await minify(compiledJs); @@ -14,53 +25,35 @@ async function compileAndMinifyElm(retries: number = 0) { if (error.message.includes("Failed to spawn 'elm': entity not found")) { throw "Elm is not installed. Please install Elm from https://guide.elm-lang.org/install/"; } - - Deno.mkdir("./static/js", { recursive: true }); - - if (retries < maxRetries) { - compileAndMinifyElm(retries + 1); - } else { - console.error("Failed to compile Elm after 3 retries"); - } } throw error; } } -async function compileSass(retries: number = 0) { - try { - const compiledCss = sass.compile("./src/assets/styles/main.scss", { - style: "compressed", - sourceMap: false - }); - await Deno.writeTextFile("./static/css/main.min.css", compiledCss.css); - } catch (error) { - if (error instanceof Deno.errors.NotFound) { - Deno.mkdir("./static/css", { recursive: true }); - - if (retries < maxRetries) { - compileSass(retries + 1); - } else { - console.error("Failed to compile Sass after 3 retries"); - } - } +async function compileSass() { + const compiledCss = sass.compile("./src/assets/styles/main.scss", { + style: "compressed", + sourceMap: false + }); + await Deno.writeTextFile("./static/css/main.min.css", compiledCss.css, { + create: true + }); +} - throw error; - } +// Only run if the script is run directly, not imported as a module +if (import.meta.main) { + await compile(); } export async function compile() { - try { - console.log("🎨 Compiling Sass..."); - await compileSass(); - - console.log("🌳 Compiling Elm..."); - await compileAndMinifyElm(); - - console.log("✅ Done!"); - } catch (error) { - console.log(error); - Deno.exit(1); - } -} \ No newline at end of file + await createDirectories(); + + console.log("🎨 Compiling Sass..."); + await compileSass(); + + console.log("🌳 Compiling Elm..."); + await compileAndMinifyElm(); + + console.log("✅ Done!"); +}