summaryrefslogtreecommitdiffhomepage
path: root/cloud/web/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'cloud/web/scripts')
-rw-r--r--cloud/web/scripts/render.mjs24
1 files changed, 24 insertions, 0 deletions
diff --git a/cloud/web/scripts/render.mjs b/cloud/web/scripts/render.mjs
new file mode 100644
index 000000000..5ccb35ff1
--- /dev/null
+++ b/cloud/web/scripts/render.mjs
@@ -0,0 +1,24 @@
+import fs from "fs"
+import path from "path"
+import { generateHydrationScript, getAssets } from "solid-js/web"
+
+const dist = import.meta.resolve("../dist").replace("file://", "")
+const serverEntry = await import("../dist/server/entry-server.js")
+const template = fs.readFileSync(path.join(dist, "client/index.html"), "utf-8")
+fs.writeFileSync(path.join(dist, "client/fallback.html"), template)
+
+const routes = ["/", "/foo"]
+for (const route of routes) {
+ const { app } = serverEntry.render({ url: route })
+ const html = template
+ .replace("<!--ssr-outlet-->", app)
+ .replace("<!--ssr-head-->", generateHydrationScript())
+ .replace("<!--ssr-assets-->", getAssets())
+ const filePath = dist + `/client${route === "/" ? "/index" : route}.html`
+ fs.mkdirSync(path.dirname(filePath), {
+ recursive: true,
+ })
+ fs.writeFileSync(filePath, html)
+
+ console.log(`Pre-rendered: ${filePath}`)
+}