Skip to content

Commit

Permalink
fix: restart optimize (#7004)
Browse files Browse the repository at this point in the history
  • Loading branch information
bluwy committed Mar 3, 2022
1 parent ce07a0a commit 47fbe29
Showing 1 changed file with 21 additions and 5 deletions.
26 changes: 21 additions & 5 deletions packages/vite/src/node/server/index.ts
Expand Up @@ -10,7 +10,7 @@ import chokidar from 'chokidar'
import type { CommonServerOptions } from '../http'
import { resolveHttpsConfig, resolveHttpServer, httpServerStart } from '../http'
import type { InlineConfig, ResolvedConfig } from '../config'
import { resolveConfig } from '../config'
import { mergeConfig, resolveConfig } from '../config'
import type { PluginContainer } from './pluginContainer'
import { createPluginContainer } from './pluginContainer'
import type { FSWatcher, WatchOptions } from 'types/chokidar'
Expand Down Expand Up @@ -409,7 +409,7 @@ export async function createServer(
throw new Error('cannot print server URLs in middleware mode.')
}
},
async restart(forceOptimize: boolean) {
async restart(forceOptimize?: boolean) {
if (!server._restartPromise) {
server._forceOptimizeOnRestart = !!forceOptimize
server._restartPromise = restartServer(server).finally(() => {
Expand Down Expand Up @@ -574,7 +574,7 @@ export async function createServer(
try {
server._optimizeDepsMetadata = await optimizeDeps(
config,
config.server.force || server._forceOptimizeOnRestart
config.server.force
)
} finally {
server._isRunningOptimizer = false
Expand Down Expand Up @@ -743,9 +743,18 @@ async function restartServer(server: ViteDevServer) {

await server.close()

let inlineConfig = server.config.inlineConfig
if (server._forceOptimizeOnRestart) {
inlineConfig = mergeConfig(inlineConfig, {
server: {
force: true
}
})
}

let newServer = null
try {
newServer = await createServer(server.config.inlineConfig)
newServer = await createServer(inlineConfig)
} catch (err: any) {
server.config.logger.error(err.message, {
timestamp: true
Expand All @@ -754,7 +763,11 @@ async function restartServer(server: ViteDevServer) {
}

for (const key in newServer) {
if (key !== 'app') {
if (key === '_restartPromise') {
// prevent new server `restart` function from calling
// @ts-ignore
newServer[key] = server[key]
} else if (key !== 'app') {
// @ts-ignore
server[key] = newServer[key]
}
Expand All @@ -774,4 +787,7 @@ async function restartServer(server: ViteDevServer) {
} else {
logger.info('server restarted.', { timestamp: true })
}

// new server (the current server) can restart now
newServer._restartPromise = null
}

0 comments on commit 47fbe29

Please sign in to comment.