From 1a8699a0124ba45202cc4d57255d5d0d6ff6abb7 Mon Sep 17 00:00:00 2001 From: Sam Tolmay Date: Wed, 26 Jan 2022 21:50:19 +0200 Subject: [PATCH] feat(server-dev): Skip calling next and lowdefy build using npm/yarn start. --- packages/server-dev/src/manager/getContext.mjs | 7 +++++++ .../src/manager/processes/lowdefyBuild.mjs | 6 +++--- .../server-dev/src/manager/processes/nextBuild.mjs | 8 ++++---- .../src/manager/processes/shutdownServer.mjs | 12 ++++++------ .../src/manager/processes/startNextServer.mjs | 7 ++----- 5 files changed, 22 insertions(+), 18 deletions(-) diff --git a/packages/server-dev/src/manager/getContext.mjs b/packages/server-dev/src/manager/getContext.mjs index 321194b6a..c8fd8cd5e 100644 --- a/packages/server-dev/src/manager/getContext.mjs +++ b/packages/server-dev/src/manager/getContext.mjs @@ -16,6 +16,7 @@ /* eslint-disable no-console */ import path from 'path'; +import { createRequire } from 'module'; import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; @@ -30,10 +31,16 @@ import shutdownServer from './processes/shutdownServer.mjs'; import startWatchers from './processes/startWatchers.mjs'; const argv = yargs(hideBin(process.argv)).argv; +const require = createRequire(import.meta.url); async function getContext() { const { verbose = false } = argv; const context = { + bin: { + // TODO: The string replace is a little hacky and will fail if the location of the bin changes, + lowdefyBuild: require.resolve('@lowdefy/build').replace('index.js', 'scripts/run.js'), + next: require.resolve('next').replace('server/next.js', 'bin/next'), + }, directories: { build: path.resolve(process.cwd(), './build'), config: path.resolve( diff --git a/packages/server-dev/src/manager/processes/lowdefyBuild.mjs b/packages/server-dev/src/manager/processes/lowdefyBuild.mjs index 81b15361c..ba96f8daa 100644 --- a/packages/server-dev/src/manager/processes/lowdefyBuild.mjs +++ b/packages/server-dev/src/manager/processes/lowdefyBuild.mjs @@ -16,12 +16,12 @@ import { spawnProcess } from '@lowdefy/node-utils'; -function lowdefyBuild({ packageManager, directories }) { +function lowdefyBuild({ bin, directories }) { return async () => { await spawnProcess({ + command: 'node', + args: [bin.lowdefyBuild], logger: console, - args: ['run', 'build:lowdefy'], - command: packageManager, processOptions: { env: { ...process.env, diff --git a/packages/server-dev/src/manager/processes/nextBuild.mjs b/packages/server-dev/src/manager/processes/nextBuild.mjs index dbf22b521..88904d9e8 100644 --- a/packages/server-dev/src/manager/processes/nextBuild.mjs +++ b/packages/server-dev/src/manager/processes/nextBuild.mjs @@ -16,14 +16,14 @@ import { spawnProcess } from '@lowdefy/node-utils'; -function nextBuild({ packageManager, verbose }) { +function nextBuild(context) { return async () => { console.log('Building app...'); await spawnProcess({ logger: console, - args: ['run', 'build:next'], - command: packageManager, - silent: !verbose, + command: 'node', + args: [context.bin.next, 'build'], + silent: !context.verbose, }); }; } diff --git a/packages/server-dev/src/manager/processes/shutdownServer.mjs b/packages/server-dev/src/manager/processes/shutdownServer.mjs index ace29ff6a..37dd07fae 100644 --- a/packages/server-dev/src/manager/processes/shutdownServer.mjs +++ b/packages/server-dev/src/manager/processes/shutdownServer.mjs @@ -16,18 +16,18 @@ function shutdownServer(context) { return () => { - if (context.serverProcess) { + if (context.nextServer) { // console.log( - // `Existing server ${context.serverProcess.pid}, killed: ${context.serverProcess.killed}` + // `Existing server ${context.nextServer.pid}, killed: ${context.nextServer.killed}` // ); - if (!context.serverProcess.killed) { + if (!context.nextServer.killed) { console.log('Shutting down server...'); - context.serverProcess.kill(); + context.nextServer.kill(); // console.log( - // `Killed server ${context.serverProcess.pid}, killed: ${context.serverProcess.killed}` + // `Killed server ${context.nextServer.pid}, killed: ${context.nextServer.killed}` // ); } - context.serverProcess = null; + context.nextServer = null; } }; } diff --git a/packages/server-dev/src/manager/processes/startNextServer.mjs b/packages/server-dev/src/manager/processes/startNextServer.mjs index f1527ee9d..a4f852977 100644 --- a/packages/server-dev/src/manager/processes/startNextServer.mjs +++ b/packages/server-dev/src/manager/processes/startNextServer.mjs @@ -14,18 +14,15 @@ limitations under the License. */ -import { createRequire } from 'module'; import spawnProcess from '../utils/spawnProcess.mjs'; -const require = createRequire(import.meta.url); - function startServerProcess(context) { context.shutdownServer(); - const nextCliUrl = require.resolve('next').replace('server/next.js', 'bin/next'); + const nextServer = spawnProcess({ logger: console, command: 'node', - args: [nextCliUrl, 'start'], + args: [context.bin.next, 'start'], silent: false, processOptions: { env: {