From 921c9cb3127b10cb050b3b9ae144d326f4a7f20c Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Thu, 13 Jul 2023 17:37:57 +0200 Subject: [PATCH] RSC: Use rw serve (#8897) --- packages/cli/src/commands/serve.js | 45 ++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/commands/serve.js b/packages/cli/src/commands/serve.js index 9d9ca27e68ea..54215425f323 100644 --- a/packages/cli/src/commands/serve.js +++ b/packages/cli/src/commands/serve.js @@ -52,7 +52,24 @@ export const builder = async (yargs) => { separator, ].join('\n') ) - if (getConfig().experimental?.streamingSsr?.enabled) { + if (getConfig().experimental?.rsc?.enabled) { + console.warn('') + console.warn('⚠️ Skipping Fastify web server ⚠️') + console.warn('⚠️ Using new RSC server instead ⚠️') + console.warn('') + await execa( + 'node', + [ + '--conditions react-server', + './node_modules/@redwoodjs/vite/dist/runRscFeServer.js', + ], + { + cwd: getPaths().base, + stdio: 'inherit', + shell: true, + } + ) + } else if (getConfig().experimental?.streamingSsr?.enabled) { console.warn('') console.warn('⚠️ Skipping Fastify web server ⚠️') console.warn('⚠️ Using new Streaming FE server instead ⚠️') @@ -76,7 +93,31 @@ export const builder = async (yargs) => { return } - if (getConfig().experimental?.streamingSsr?.enabled) { + if (getConfig().experimental?.rsc?.enabled) { + const { apiServerHandler } = await import('./serveHandler.js') + // TODO (RSC) Allow specifying port, socket and apiRootPath + const apiPromise = apiServerHandler({ + ...argv, + port: 8911, + apiRootPath: '/', + }) + + // TODO (RSC) More gracefully handle Ctrl-C + const fePromise = execa( + 'node', + [ + '--conditions react-server', + './node_modules/@redwoodjs/vite/dist/runRscFeServer.js', + ], + { + cwd: getPaths().base, + stdio: 'inherit', + shell: true, + } + ) + + await Promise.all([apiPromise, fePromise]) + } else if (getConfig().experimental?.streamingSsr?.enabled) { const { apiServerHandler } = await import('./serveHandler.js') // TODO (STREAMING) Allow specifying port, socket and apiRootPath const apiPromise = apiServerHandler({