35 lines
1.1 KiB
JavaScript
35 lines
1.1 KiB
JavaScript
import { copyFile, mkdir } from "node:fs/promises";
|
|
import path from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
import {
|
|
demoPublicRoutes,
|
|
demoRuntimeRoutes,
|
|
} from "../src/lib/demoRoutes.mjs";
|
|
|
|
const siteRoot = path.resolve(fileURLToPath(new URL("..", import.meta.url)));
|
|
const distRoot = path.join(siteRoot, "dist");
|
|
|
|
const demoRoutes = demoPublicRoutes.map((route) => `demo/${route}`);
|
|
const runtimeRoutes = demoRuntimeRoutes.map((route) => `demo/runtime/${route}`);
|
|
|
|
async function copyHtml(source, route) {
|
|
const targetDir = path.join(distRoot, route);
|
|
await mkdir(targetDir, { recursive: true });
|
|
await copyFile(source, path.join(targetDir, "index.html"));
|
|
}
|
|
|
|
const demoShell = path.join(distRoot, "demo", "index.html");
|
|
const runtimeApp = path.join(distRoot, "demo", "runtime", "app.html");
|
|
|
|
for (const route of demoRoutes) {
|
|
await copyHtml(demoShell, route);
|
|
}
|
|
|
|
for (const route of runtimeRoutes) {
|
|
await copyHtml(runtimeApp, route);
|
|
}
|
|
|
|
console.log(
|
|
`Materialized ${demoRoutes.length} public demo routes and ${runtimeRoutes.length} runtime routes`,
|
|
);
|