From d63cdb3be47b4431e83aed066db232f18d6eaefa Mon Sep 17 00:00:00 2001 From: CHOYSEN Date: Fri, 24 Jun 2022 00:26:09 +0800 Subject: [PATCH 1/3] refactor: move side effect of restart server to the caller --- packages/vite/src/node/server/hmr.ts | 10 ++++++++++ packages/vite/src/node/server/index.ts | 13 +------------ 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/packages/vite/src/node/server/hmr.ts b/packages/vite/src/node/server/hmr.ts index e12f1a2effd244..eed2794a00a7de 100644 --- a/packages/vite/src/node/server/hmr.ts +++ b/packages/vite/src/node/server/hmr.ts @@ -63,7 +63,17 @@ export async function handleHMRUpdate( { clear: true, timestamp: true } ) try { + const { port: prevPort, host: prevHost } = config.server await server.restart() + const { + logger, + server: { port, host } + } = server.config + logger.info('server restarted.', { timestamp: true }) + if (port !== prevPort || host !== prevHost) { + logger.info('') + server.printUrls() + } } catch (e) { config.logger.error(colors.red(e)) } diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index 9227746eb23c4c..19f759147b4d94 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -690,7 +690,6 @@ export function resolveServerOptions( async function restartServer(server: ViteDevServer) { // @ts-ignore global.__vite_start_time = performance.now() - const { port: prevPort, host: prevHost } = server.config.server await server.close() @@ -724,19 +723,9 @@ async function restartServer(server: ViteDevServer) { } } - const { - logger, - server: { port, host, middlewareMode } - } = server.config + const { port, middlewareMode } = server.config.server if (!middlewareMode) { await server.listen(port, true) - logger.info('server restarted.', { timestamp: true }) - if (port !== prevPort || host !== prevHost) { - logger.info('') - server.printUrls() - } - } else { - logger.info('server restarted.', { timestamp: true }) } // new server (the current server) can restart now From 00528b45e22b5d1e1b701553b5ffb3bbff697dbe Mon Sep 17 00:00:00 2001 From: bluwy Date: Mon, 23 Oct 2023 22:37:10 +0800 Subject: [PATCH 2/3] fix: only print url in non middlewareMode --- packages/vite/src/node/server/hmr.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/vite/src/node/server/hmr.ts b/packages/vite/src/node/server/hmr.ts index aacd2225ff8ee2..357a2832557806 100644 --- a/packages/vite/src/node/server/hmr.ts +++ b/packages/vite/src/node/server/hmr.ts @@ -78,7 +78,7 @@ export async function handleHMRUpdate( { clear: true, timestamp: true }, ) try { - const { port: prevPort, host: prevHost } = config.server + const { port: prevPort, host: prevHost, middlewareMode } = config.server const oldUrls = server.resolvedUrls await server.restart() const { @@ -86,9 +86,10 @@ export async function handleHMRUpdate( server: { port, host }, } = server.config if ( - (port ?? DEFAULT_DEV_PORT) !== (prevPort ?? DEFAULT_DEV_PORT) || - host !== prevHost || - diffDnsOrderChange(oldUrls, server.resolvedUrls) + !middlewareMode && + ((port ?? DEFAULT_DEV_PORT) !== (prevPort ?? DEFAULT_DEV_PORT) || + host !== prevHost || + diffDnsOrderChange(oldUrls, server.resolvedUrls)) ) { logger.info('') server.printUrls() From ec2c0cee4c4daebabacbb4a3de6fa8a39b75d55c Mon Sep 17 00:00:00 2001 From: bluwy Date: Wed, 25 Oct 2023 12:47:47 +0800 Subject: [PATCH 3/3] fix: solution 1 --- packages/vite/src/node/server/hmr.ts | 21 +++-------------- packages/vite/src/node/server/index.ts | 31 ++++++++++++++++++++++++++ packages/vite/src/node/shortcuts.ts | 4 ++-- 3 files changed, 36 insertions(+), 20 deletions(-) diff --git a/packages/vite/src/node/server/hmr.ts b/packages/vite/src/node/server/hmr.ts index 357a2832557806..b38cfa71de9082 100644 --- a/packages/vite/src/node/server/hmr.ts +++ b/packages/vite/src/node/server/hmr.ts @@ -4,10 +4,9 @@ import type { Server } from 'node:http' import colors from 'picocolors' import type { Update } from 'types/hmrPayload' import type { RollupError } from 'rollup' -import { CLIENT_DIR, DEFAULT_DEV_PORT } from '../constants' +import { CLIENT_DIR } from '../constants' import { createDebugger, - diffDnsOrderChange, normalizePath, unique, withTrailingSlash, @@ -19,6 +18,7 @@ import { getAffectedGlobModules } from '../plugins/importMetaGlob' import { isExplicitImportRequired } from '../plugins/importAnalysis' import { getEnvFilesForMode } from '../env' import type { ModuleNode } from './moduleGraph' +import { restartServerWithUrls } from '.' export const debugHmr = createDebugger('vite:hmr') @@ -78,22 +78,7 @@ export async function handleHMRUpdate( { clear: true, timestamp: true }, ) try { - const { port: prevPort, host: prevHost, middlewareMode } = config.server - const oldUrls = server.resolvedUrls - await server.restart() - const { - logger, - server: { port, host }, - } = server.config - if ( - !middlewareMode && - ((port ?? DEFAULT_DEV_PORT) !== (prevPort ?? DEFAULT_DEV_PORT) || - host !== prevHost || - diffDnsOrderChange(oldUrls, server.resolvedUrls)) - ) { - logger.info('') - server.printUrls() - } + await restartServerWithUrls(server) } catch (e) { config.logger.error(colors.red(e)) } diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index a4b12150b4d195..20dfdad6be6363 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -24,6 +24,7 @@ import { import type { InlineConfig, ResolvedConfig } from '../config' import { isDepsOptimizerEnabled, resolveConfig } from '../config' import { + diffDnsOrderChange, isInNodeModules, isParentDirectory, mergeConfig, @@ -906,3 +907,33 @@ async function restartServer(server: ViteDevServer) { bindCLIShortcuts(newServer, shortcutsOptions) } } + +/** + * Internal function to restart the Vite server and print URLs if changed + */ +export async function restartServerWithUrls( + server: ViteDevServer, +): Promise { + if (server.config.server.middlewareMode) { + await server.restart() + return + } + + const { port: prevPort, host: prevHost } = server.config.server + const prevUrls = server.resolvedUrls + + await server.restart() + + const { + logger, + server: { port, host }, + } = server.config + if ( + (port ?? DEFAULT_DEV_PORT) !== (prevPort ?? DEFAULT_DEV_PORT) || + host !== prevHost || + diffDnsOrderChange(prevUrls, server.resolvedUrls) + ) { + logger.info('') + server.printUrls() + } +} diff --git a/packages/vite/src/node/shortcuts.ts b/packages/vite/src/node/shortcuts.ts index 2c604fecfe4550..162a71c45f2ec8 100644 --- a/packages/vite/src/node/shortcuts.ts +++ b/packages/vite/src/node/shortcuts.ts @@ -1,6 +1,6 @@ import readline from 'node:readline' import colors from 'picocolors' -import type { ViteDevServer } from './server' +import { type ViteDevServer, restartServerWithUrls } from './server' import { isDefined } from './utils' import type { PreviewServer } from './preview' import { openBrowser } from './server/openBrowser' @@ -91,7 +91,7 @@ const BASE_DEV_SHORTCUTS: CLIShortcut[] = [ key: 'r', description: 'restart the server', async action(server) { - await server.restart() + await restartServerWithUrls(server) }, }, {