summaryrefslogtreecommitdiffhomepage
path: root/cloud/web/scripts/render.mjs
blob: 5ccb35ff128176a7b4af2c176de7db885b575167 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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}`)
}