diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index 4716bc6fa11271..ef1b284f06b5a8 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -412,25 +412,6 @@ export async function resolveConfig( } }) - let workerConfig = mergeConfig({}, config) - const [workerPrePlugins, workerNormalPlugins, workerPostPlugins] = - sortUserPlugins(rawWorkerUserPlugins) - - // run config hooks - const workerUserPlugins = [ - ...workerPrePlugins, - ...workerNormalPlugins, - ...workerPostPlugins - ] - for (const p of workerUserPlugins) { - if (p.config) { - const res = await p.config(workerConfig, configEnv) - if (res) { - workerConfig = mergeConfig(workerConfig, res) - } - } - } - // resolve plugins const rawUserPlugins = ( (await asyncFlatten(config.plugins || [])) as Plugin[] @@ -607,6 +588,24 @@ export async function resolveConfig( const BASE_URL = resolvedBase // resolve worker + let workerConfig = mergeConfig({}, config) + const [workerPrePlugins, workerNormalPlugins, workerPostPlugins] = + sortUserPlugins(rawWorkerUserPlugins) + + // run config hooks + const workerUserPlugins = [ + ...workerPrePlugins, + ...workerNormalPlugins, + ...workerPostPlugins + ] + for (const p of workerUserPlugins) { + if (p.config) { + const res = await p.config(workerConfig, configEnv) + if (res) { + workerConfig = mergeConfig(workerConfig, res) + } + } + } const resolvedWorkerOptions: ResolveWorkerOptions = { format: workerConfig.worker?.format || 'iife', plugins: [], @@ -663,7 +662,44 @@ export async function resolveConfig( ...config.experimental } } - const resolved: ResolvedConfig = Object.assign(config, resolvedConfig) + const resolved: ResolvedConfig = { + ...config, + ...resolvedConfig + } + + ;(resolved.plugins as Plugin[]) = await resolvePlugins( + resolved, + prePlugins, + normalPlugins, + postPlugins + ) + + const workerResolved: ResolvedConfig = { + ...workerConfig, + ...resolvedConfig, + isWorker: true, + mainConfig: resolved + } + + resolvedConfig.worker.plugins = await resolvePlugins( + workerResolved, + workerPrePlugins, + workerNormalPlugins, + workerPostPlugins + ) + + // call configResolved hooks + await Promise.all( + userPlugins + .map((p) => p.configResolved?.(resolved)) + .concat( + resolvedConfig.worker.plugins.map((p) => + p.configResolved?.(workerResolved) + ) + ) + ) + + // validate config if (middlewareMode === 'ssr') { logger.warn( @@ -695,35 +731,6 @@ export async function resolveConfig( ) } - ;(resolved.plugins as Plugin[]) = await resolvePlugins( - resolved, - prePlugins, - normalPlugins, - postPlugins - ) - - const workerResolved: ResolvedConfig = Object.assign( - workerConfig, - resolvedConfig, - { - isWorker: true, - mainConfig: resolved - } - ) - resolved.worker.plugins = await resolvePlugins( - workerResolved, - workerPrePlugins, - workerNormalPlugins, - workerPostPlugins - ) - - // call configResolved hooks - await Promise.all( - userPlugins - .map((p) => p.configResolved?.(resolved)) - .concat(workerUserPlugins.map((p) => p.configResolved?.(workerResolved))) - ) - if (process.env.DEBUG) { debug(`using resolved config: %O`, { ...resolved,