From 277b5582d41c3c1ec348849f856368b9c66242c1 Mon Sep 17 00:00:00 2001 From: Trent Rand Date: Sun, 14 Jul 2024 16:07:52 -0700 Subject: [PATCH] feat: render application at build time Replace server-side rendering with build-time rendering for the entire application. - Eliminates the need for a server to be running - Renders all components at build time, including those that require client-side hydration - Simplifies the development process by automatically handling components that require client-side hydration --- bun.lockb | Bin 257866 -> 230343 bytes index.html | 23 -------- package.json | 15 ++--- {src/app => public}/favicon.ico | Bin {src/app => public}/icon.png | Bin {src/app => public}/icon.svg | 0 server.js | 53 ------------------ .../Flash.client.jsx => components/Flash.jsx} | 8 +-- src/entry-client.jsx | 13 ----- src/entry-server.jsx | 15 ----- src/layouts/Head.jsx | 13 +++++ src/layouts/Layout.jsx | 9 +++ src/pages/+config.js | 11 ++++ src/{app/App.jsx => pages/index/+Page.jsx} | 19 +++---- .../index/Page.test.jsx} | 0 src/utils/fastboot.js | 2 +- vite.config.js | 23 +++----- 17 files changed, 57 insertions(+), 147 deletions(-) delete mode 100644 index.html rename {src/app => public}/favicon.ico (100%) rename {src/app => public}/icon.png (100%) rename {src/app => public}/icon.svg (100%) delete mode 100644 server.js rename src/{app/Flash.client.jsx => components/Flash.jsx} (99%) delete mode 100644 src/entry-client.jsx delete mode 100644 src/entry-server.jsx create mode 100644 src/layouts/Head.jsx create mode 100644 src/layouts/Layout.jsx create mode 100644 src/pages/+config.js rename src/{app/App.jsx => pages/index/+Page.jsx} (92%) rename src/{app/App.test.jsx => pages/index/Page.test.jsx} (100%) diff --git a/bun.lockb b/bun.lockb index 5dbf326c492292be17872c812cf7f4b3cf3be763..3e0773ecf2a42468cd2b0b49c1a44109e1dcb3e6 100755 GIT binary patch delta 46929 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 E09lu))c^nh delta 63465 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 diff --git a/index.html b/index.html deleted file mode 100644 index bff1342..0000000 --- a/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - flash.comma.ai - - -
- - - - diff --git a/package.json b/package.json index 067f6ce..ae67038 100644 --- a/package.json +++ b/package.json @@ -4,12 +4,9 @@ "private": true, "type": "module", "scripts": { - "dev": "node server", - "build": "npm run build:client && npm run build:server", - "build:client": "vite build --outDir dist/client", - "build:server": "vite build --outDir dist/server --ssr src/entry-server.jsx", - "serve": "NODE_ENV=production node server", - "start": "vite preview", + "dev": "vite", + "build": "vite build", + "start": "vite build && vite preview", "lint": "eslint . --ext js,jsx --report-unused-disable-directives", "test": "vitest" }, @@ -38,14 +35,12 @@ "eslint-plugin-react": "^7.34.2", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-react-refresh": "^0.4.7", - "express": "^4.19.2", "jsdom": "^22.1.0", "postcss": "^8.4.38", - "react-router-dom": "^6.24.1", "tailwindcss": "^3.4.3", + "vike": "^0.4.179", + "vike-react": "^0.4.17", "vite": "^5.2.12", - "vite-plugin-ssr": "^0.4.142", - "vite-plugin-style-import": "^2.0.0", "vite-svg-loader": "^5.1.0", "vitest": "^1.6.0" } diff --git a/src/app/favicon.ico b/public/favicon.ico similarity index 100% rename from src/app/favicon.ico rename to public/favicon.ico diff --git a/src/app/icon.png b/public/icon.png similarity index 100% rename from src/app/icon.png rename to public/icon.png diff --git a/src/app/icon.svg b/public/icon.svg similarity index 100% rename from src/app/icon.svg rename to public/icon.svg diff --git a/server.js b/server.js deleted file mode 100644 index e0b0a62..0000000 --- a/server.js +++ /dev/null @@ -1,53 +0,0 @@ -import fs from 'fs' -import path from 'path' -import { fileURLToPath } from 'url' -import express from 'express' -import { createServer as createViteServer } from 'vite' - -const __dirname = path.dirname(fileURLToPath(import.meta.url)) - -async function createServer() { - const app = express() - - const vite = await createViteServer({ - server: { middlewareMode: true }, - appType: 'custom' - }) - - app.use(vite.middlewares) - - app.use('*', async (req, res) => { - const url = req.originalUrl - - try { - let template = fs.readFileSync( - path.resolve(__dirname, 'index.html'), - 'utf-8' - ) - - const styleModule = await vite.ssrLoadModule('/src/index.css') - const css = styleModule.default - - template = await vite.transformIndexHtml(url, template) - template = template.replace( - '', - `` - ) - - const { render } = await vite.ssrLoadModule('/src/entry-server.jsx') - const appHtml = await render(url) - - let html = template.replace(``, appHtml) - - res.status(200).set({ 'Content-Type': 'text/html' }).end(html) - } catch (e) { - vite.ssrFixStacktrace(e) - console.error(e) - res.status(500).end(e.message) - } - }) - - app.listen(5173) -} - -createServer() diff --git a/src/app/Flash.client.jsx b/src/components/Flash.jsx similarity index 99% rename from src/app/Flash.client.jsx rename to src/components/Flash.jsx index 614fa09..4c8ce09 100644 --- a/src/app/Flash.client.jsx +++ b/src/components/Flash.jsx @@ -237,12 +237,8 @@ export default function Flash() {
- - {title} - - - {description} - + {title} + {description} {error && (