From 235775f84a43c00dfbd9f536e0dee8da96511469 Mon Sep 17 00:00:00 2001 From: MapleLeaf <19603573+itsMapleLeaf@users.noreply.github.com> Date: Fri, 31 Dec 2021 12:42:13 -0600 Subject: [PATCH] ssr in prod (!!) --- packages/docs-new/build.ts | 23 +++++++++ packages/docs-new/package.json | 7 ++- packages/docs-new/src/entry.client.tsx | 5 +- packages/docs-new/src/entry.server.tsx | 1 - packages/docs-new/src/root.tsx | 8 ++- packages/docs-new/src/server.ts | 69 ++++++++++++++++++++++++++ packages/docs-new/src/server.tsx | 35 ------------- packages/docs-new/src/vite-env.d.ts | 1 + pnpm-lock.yaml | 19 ++++--- 9 files changed, 119 insertions(+), 49 deletions(-) create mode 100644 packages/docs-new/build.ts create mode 100644 packages/docs-new/src/server.ts delete mode 100644 packages/docs-new/src/server.tsx create mode 100644 packages/docs-new/src/vite-env.d.ts diff --git a/packages/docs-new/build.ts b/packages/docs-new/build.ts new file mode 100644 index 0000000..6e97ee7 --- /dev/null +++ b/packages/docs-new/build.ts @@ -0,0 +1,23 @@ +import { resolve } from "node:path" +import { build } from "vite" + +await build({ + build: { + outDir: "dist/client", + lib: { + entry: resolve("src/entry.client.tsx"), + fileName: () => "entry.client.js", + formats: ["es"], + }, + }, +}) + +await build({ + build: { + ssr: resolve("src/entry.server.tsx"), + outDir: "dist/server", + rollupOptions: { + output: { format: "es" }, + }, + }, +}) diff --git a/packages/docs-new/package.json b/packages/docs-new/package.json index 5bb0550..7594714 100644 --- a/packages/docs-new/package.json +++ b/packages/docs-new/package.json @@ -3,19 +3,24 @@ "type": "module", "private": true, "scripts": { - "dev": "esmo src/server.tsx" + "dev": "esmo src/server.ts", + "build": "esmo build.ts", + "start": "NODE_ENV=production esmo src/server.ts" }, "dependencies": { "express": "^4.17.2", + "reacord": "workspace:*", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { + "@types/compression": "^1.7.2", "@types/express": "^4.17.13", "@types/node": "*", "@types/react": "^17.0.38", "@types/react-dom": "^17.0.9", "@vitejs/plugin-react": "^1.1.3", + "compression": "^1.7.4", "esno": "^0.13.0", "typescript": "^4.5.4", "vite": "^2.7.10" diff --git a/packages/docs-new/src/entry.client.tsx b/packages/docs-new/src/entry.client.tsx index e17263b..981a453 100644 --- a/packages/docs-new/src/entry.client.tsx +++ b/packages/docs-new/src/entry.client.tsx @@ -1,5 +1,4 @@ -import * as React from "react" -import { render } from "react-dom" +import { hydrate } from "react-dom" import { Root } from "./root" -render(, document) +hydrate(, document) diff --git a/packages/docs-new/src/entry.server.tsx b/packages/docs-new/src/entry.server.tsx index fff1f09..2d539c0 100644 --- a/packages/docs-new/src/entry.server.tsx +++ b/packages/docs-new/src/entry.server.tsx @@ -1,4 +1,3 @@ -import * as React from "react" import { Root } from "./root" export async function render(url: string) { diff --git a/packages/docs-new/src/root.tsx b/packages/docs-new/src/root.tsx index a111273..4cd0302 100644 --- a/packages/docs-new/src/root.tsx +++ b/packages/docs-new/src/root.tsx @@ -1,4 +1,3 @@ -import React from "react" import { Counter } from "./counter" export function Root() { @@ -10,7 +9,12 @@ export function Root() { Reacord -