import { cp, mkdir, rm, readFile } from "node:fs/promises"; import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; const appRoot = dirname(dirname(fileURLToPath(import.meta.url))); const distDir = join(appRoot, "dist"); await rm(distDir, { recursive: true, force: true }); await mkdir(distDir, { recursive: true }); await cp(join(appRoot, "index.html"), join(distDir, "index.html")); await cp(join(appRoot, "src"), join(distDir, "src"), { recursive: true }); const packageJson = JSON.parse(await readFile(join(appRoot, "package.json"), "utf8")); const forbiddenDependencies = ["react", "vue", "@angular/core", "svelte"]; const dependencyNames = [ ...Object.keys(packageJson.dependencies || {}), ...Object.keys(packageJson.devDependencies || {}), ]; const forbidden = dependencyNames.filter((name) => forbiddenDependencies.includes(name)); if (forbidden.length > 0) { throw new Error(`forbidden frontend framework dependency detected: ${forbidden.join(", ")}`); } console.log("gmoccapy_static_build=ok");