diff --git a/packages/vite/package.json b/packages/vite/package.json index 4f2f5b6871e9..e819aee54362 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -37,7 +37,6 @@ }, "bin": { "rw-dev-fe": "./dist/devFeServer.js", - "rw-dev-rsc": "./dist/devRscServer.js", "rw-serve-fe": "./dist/runFeServer.js", "rw-vite-build": "./bins/rw-vite-build.mjs", "rw-vite-dev": "./bins/rw-vite-dev.mjs", @@ -74,7 +73,6 @@ "acorn-loose": "8.4.0", "buffer": "6.0.3", "busboy": "^1.6.0", - "chokidar": "3.6.0", "cookie": "0.6.0", "core-js": "3.38.1", "dotenv-defaults": "5.0.2", diff --git a/packages/vite/src/devRscServer.ts b/packages/vite/src/devRscServer.ts deleted file mode 100644 index 578394e45272..000000000000 --- a/packages/vite/src/devRscServer.ts +++ /dev/null @@ -1,131 +0,0 @@ -import http from 'node:http' - -import chokidar from 'chokidar' -import execa from 'execa' -import { rimraf } from 'rimraf' - -import { getPaths } from '@redwoodjs/project-config' - -import { buildFeServer } from './buildFeServer.js' - -export const startDevServerWithLiveReload = async () => { - let child: execa.ExecaChildProcess - let client: http.ServerResponse - - const rwjsPaths = getPaths() - - const sendReloadEvent = () => { - if (typeof client !== 'undefined') { - client.write('event: reload\n') - client.write('data: \n\n') - } - } - - const killCleanAndBuild = async () => { - try { - child.kill() - } catch (e) { - console.warn('[rsc-dev-server] could not shutdown server process', e) - } - - await rimraf.rimraf(rwjsPaths.web.dist) - await rimraf.rimraf(rwjsPaths.api.dist) - await buildFeServer({ verbose: false, webDir: rwjsPaths.web.base }) - } - - const runFrontendServer = () => { - // NOTE: We explicitly run this via `execa.node` - // because we need this process to support IPC. - const child = execa.node( - './node_modules/@redwoodjs/vite/dist/runFeServer.js', - { - cwd: rwjsPaths.base, - stdio: 'inherit', - env: { - NODE_ENV: process.env.NODE_ENV, - NODE_OPTIONS: '--conditions react-server', - }, - }, - ) - - child.addListener('message', (m) => { - if (m === 'server ready') { - sendReloadEvent() - } - }) - - return child - } - - const watcher = chokidar.watch('(web|api)/src/**/*.{ts,js,jsx,tsx}', { - persistent: true, - ignored: ['node_modules', '.redwood'], - ignoreInitial: true, - cwd: rwjsPaths.base, - awaitWriteFinish: true, - }) - - process.stdin.on('data', async (data) => { - const str = data.toString().trim().toLowerCase() - if (str !== 'rs') { - return - } - - console.log('[rsc-dev-server] restarting...') - await killCleanAndBuild() - child = runFrontendServer() - - try { - await child - console.log('[rsc-dev-server] restarted') - } catch (e) { - console.error('[rsc-dev-server] error', e) - } - }) - - watcher - .on('ready', async () => { - await killCleanAndBuild() - child = runFrontendServer() - - http - .createServer(async (_req, res) => { - client = res - res.writeHead(200, { - 'content-type': 'text/event-stream', - 'cache-control': 'no-cache', - connection: 'keep-alive', - 'access-control-allow-origin': '*', - }) - }) - .listen(8913) - - try { - await child - } catch (e) { - console.error('[rsc-dev-server] error', e) - } - }) - .on('all', async () => { - console.log('[rsc-dev-server] restarting...') - await killCleanAndBuild() - child = runFrontendServer() - - try { - await child - console.log('[rsc-dev-server] restarted') - } catch (e) { - console.error('[rsc-dev-server] error', e) - } - }) -} - -process.env.NODE_ENV = 'development' -startDevServerWithLiveReload() - .then(() => { - console.log('[rsc-dev-server] started') - }) - .catch((e) => { - console.error('[rsc-dev-server] error', e) - process.exitCode = 1 - }) diff --git a/packages/vite/src/runFeServer.ts b/packages/vite/src/runFeServer.ts index 2f7dba3b4cf9..f4baabb1e8c2 100644 --- a/packages/vite/src/runFeServer.ts +++ b/packages/vite/src/runFeServer.ts @@ -6,7 +6,6 @@ // fe-server. And it's already created, but this hasn't been moved over yet. import path from 'node:path' -import process from 'node:process' import url from 'node:url' import { createServerAdapter } from '@whatwg-node/server' @@ -202,10 +201,6 @@ export async function runFeServer() { console.log( `Started production FE server on http://localhost:${rwConfig.web.port}`, ) - - if (typeof process.send !== 'undefined') { - process.send('server ready') - } } function createWebSocketServer() { diff --git a/packages/vite/src/streaming/streamHelpers.ts b/packages/vite/src/streaming/streamHelpers.ts index 8d4169505c52..fcc9abce7608 100644 --- a/packages/vite/src/streaming/streamHelpers.ts +++ b/packages/vite/src/streaming/streamHelpers.ts @@ -69,20 +69,6 @@ globalThis.__webpack_require__ ||= (id) => { }; ` -const rscLiveReload = `\ -// NOTE: This code is used during development to enable "live-reload." -window.addEventListener('load', () => { - const sse = new EventSource('http://localhost:8913'); - sse.addEventListener('reload', () => { - window.location.reload(); - }); - window.addEventListener('beforeunload', () => { - sse.close(); - }); - // TODO (RSC): Handle disconnect / error states. -}); -` - export async function reactRenderToStreamResponse( mwRes: MiddlewareResponse, renderOptions: RenderToStreamArgs, @@ -193,7 +179,7 @@ export async function reactRenderToStreamResponse( bootstrapScriptContent: // Only insert assetMap if client side JS will be loaded jsBundles.length > 0 - ? `window.__REDWOOD__ASSET_MAP = ${assetMap}; ${rscWebpackShims}; ${isProd ? '' : rscLiveReload}` + ? `window.__REDWOOD__ASSET_MAP = ${assetMap}; ${rscWebpackShims}` : undefined, bootstrapModules: jsBundles, } diff --git a/yarn.lock b/yarn.lock index cac06240e78d..045268f1110d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8932,7 +8932,6 @@ __metadata: acorn-loose: "npm:8.4.0" buffer: "npm:6.0.3" busboy: "npm:^1.6.0" - chokidar: "npm:3.6.0" concurrently: "npm:8.2.2" cookie: "npm:0.6.0" core-js: "npm:3.38.1" @@ -8960,7 +8959,6 @@ __metadata: yargs-parser: "npm:21.1.1" bin: rw-dev-fe: ./dist/devFeServer.js - rw-dev-rsc: ./dist/devRscServer.js rw-serve-fe: ./dist/runFeServer.js rw-vite-build: ./bins/rw-vite-build.mjs rw-vite-dev: ./bins/rw-vite-dev.mjs