From c6b782ff8be84634060c3af8c5c3aee27ccda5d9 Mon Sep 17 00:00:00 2001 From: Araozu Date: Sat, 6 May 2023 19:14:11 -0500 Subject: [PATCH] Stable SSR with esbuild --- esbuild.js | 64 ++++++++++++++++++++++++++++++++++++++++----- esbuild2.js | 51 ------------------------------------ package.json | 17 ++---------- shared/src/App.js | 7 ----- shared/src/index.js | 5 ---- ssr/index.js | 6 ----- tsconfig.json | 7 +++-- 7 files changed, 65 insertions(+), 92 deletions(-) delete mode 100644 esbuild2.js delete mode 100644 shared/src/App.js delete mode 100644 shared/src/index.js delete mode 100644 ssr/index.js diff --git a/esbuild.js b/esbuild.js index 8a298ae..b222d93 100644 --- a/esbuild.js +++ b/esbuild.js @@ -1,14 +1,38 @@ -const {build} = require("esbuild"); -const {solidPlugin} = require("esbuild-plugin-solid"); +const { build, context } = require("esbuild"); +const { solidPlugin } = require("esbuild-plugin-solid"); const path = require("path"); const fs = require("fs"); -const glob = require("glob"); +const { glob } = require("glob"); -glob.glob("./src/**/*.{ts,tsx}") +(async() => { + const files = await glob("dist/**/*.jsx"); + const ctx = await context({ + platform: "node", + entryPoints: files, + bundle: false, + minify: false, + logLevel: "info", + plugins: [solidPlugin({ + solid: { + generate: "ssr", + hydratable: true, + }, + })], + outdir: "dist/src", + format: "cjs", + }); + + await ctx.watch(); + console.log("Watching..."); +})(); + +/* +glob("dist/** /*.jsx") .then((files) => { - console.log(files); build({ + platform: "node", entryPoints: files, + bundle: false, minify: false, logLevel: "info", plugins: [solidPlugin({ @@ -17,7 +41,35 @@ glob.glob("./src/**/*.{ts,tsx}") hydratable: true, }, })], - outdir: "dist", + outdir: "dist/src", format: "cjs", }); }); +*/ + +/* +build({ + platform: "node", + entryPoints: [ + "src/main.ts", + ], + bundle: true, + minify: false, + logLevel: "info", + plugins: [solidPlugin({ + solid: { + generate: "ssr", + hydratable: true, + }, + })], + outdir: "dist", + format: "cjs", + external: [ + "@nestjs/*", + "@fastify/*", + "class-validator", + "class-transformer", + "cache-manager", + ], +}); + */ diff --git a/esbuild2.js b/esbuild2.js deleted file mode 100644 index 2c27c36..0000000 --- a/esbuild2.js +++ /dev/null @@ -1,51 +0,0 @@ -const { build } = require("esbuild"); -const { solidPlugin } = require("esbuild-plugin-solid"); -const path = require("path"); -const fs = require("fs"); -const { glob } = require("glob"); - -glob("dist/**/*.jsx") - .then((files) => { - build({ - platform: "node", - entryPoints: files, - bundle: false, - minify: false, - logLevel: "info", - plugins: [solidPlugin({ - solid: { - generate: "ssr", - hydratable: true, - }, - })], - outdir: "dist/src", - format: "cjs", - }); - }); - -/* -build({ - platform: "node", - entryPoints: [ - "src/main.ts", - ], - bundle: true, - minify: false, - logLevel: "info", - plugins: [solidPlugin({ - solid: { - generate: "ssr", - hydratable: true, - }, - })], - outdir: "dist", - format: "cjs", - external: [ - "@nestjs/*", - "@fastify/*", - "class-validator", - "class-transformer", - "cache-manager", - ], -}); - */ diff --git a/package.json b/package.json index 87d512c..b185249 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,6 @@ "license": "UNLICENSED", "scripts": { "build": "nest build", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "nest start", "start:dev": "nest start --watch", "start:debug": "nest start --debug --watch", @@ -17,7 +16,8 @@ "test:watch": "jest --watch", "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", - "test:e2e": "jest --config ./test/jest-e2e.json" + "test:e2e": "jest --config ./test/jest-e2e.json", + "ssr:watch": "node esbuild.js" }, "dependencies": { "@nestjs/common": "^9.0.0", @@ -31,20 +31,10 @@ "typeorm": "^0.3.15" }, "devDependencies": { - "@babel/core": "^7.21.8", - "@babel/plugin-proposal-decorators": "^7.21.0", - "@babel/preset-env": "^7.21.5", "@nestjs/cli": "^9.0.0", "@nestjs/platform-fastify": "^9.4.0", "@nestjs/schematics": "^9.0.0", "@nestjs/testing": "^9.0.0", - "@rollup/plugin-babel": "^6.0.3", - "@rollup/plugin-commonjs": "^24.1.0", - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.0.2", - "@rollup/plugin-replace": "^5.0.2", - "@rollup/plugin-terser": "^0.4.1", - "@rollup/plugin-typescript": "^11.1.0", "@types/express": "^4.17.13", "@types/jest": "29.5.0", "@types/node": "18.15.11", @@ -52,8 +42,6 @@ "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", "autoprefixer": "^10.4.14", - "babel-loader": "^9.1.2", - "babel-preset-solid": "^1.6.9", "esbuild": "^0.17.18", "esbuild-plugin-solid": "^0.5.0", "eslint": "^8.0.1", @@ -61,7 +49,6 @@ "glob": "^10.2.2", "jest": "29.5.0", "postcss": "^8.4.23", - "rollup": "^3.21.5", "rollup-plugin-copy": "^3.4.0", "rollup-route-manifest": "^1.0.0", "source-map-support": "^0.5.20", diff --git a/shared/src/App.js b/shared/src/App.js deleted file mode 100644 index e68ba50..0000000 --- a/shared/src/App.js +++ /dev/null @@ -1,7 +0,0 @@ -export function App() { - return ( -
- SSR :D -
- ) -} diff --git a/shared/src/index.js b/shared/src/index.js deleted file mode 100644 index ce620d5..0000000 --- a/shared/src/index.js +++ /dev/null @@ -1,5 +0,0 @@ -import { hydrate } from "solid-js/web"; -import {App} from "./App"; - -// entry point for browser -hydrate(() => , document); diff --git a/ssr/index.js b/ssr/index.js deleted file mode 100644 index b6b270a..0000000 --- a/ssr/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import {renderToString} from "solid-js/web"; -import {App} from "../shared/src/App"; - -const html = renderToString(() => ) - -console.log(html); diff --git a/tsconfig.json b/tsconfig.json index dc0875f..5fe24bf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,6 @@ { "compilerOptions": { "module": "commonjs", - "allowJs": true, "declaration": true, "removeComments": true, "emitDecoratorMetadata": true, @@ -20,5 +19,9 @@ "noFallthroughCasesInSwitch": true, "jsx": "preserve", "jsxImportSource": "solid-js" - } + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx" + ] }