diff --git a/packages/playground/vue-jsx/vite.config.js b/packages/playground/vue-jsx/vite.config.js index d6eb84e05f4e4a..4c7370a0ce4787 100644 --- a/packages/playground/vue-jsx/vite.config.js +++ b/packages/playground/vue-jsx/vite.config.js @@ -35,5 +35,6 @@ export default defineComponent(() => { build: { // to make tests faster minify: false - } + }, + optimizeDeps: false } diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index 9910cbb3a8b004..b02ac6e496593e 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -145,8 +145,10 @@ export interface UserConfig { preview?: PreviewOptions /** * Dep optimization options + * + * false disables optimization completely (experimental) */ - optimizeDeps?: DepOptimizationOptions + optimizeDeps?: DepOptimizationOptions | false /** * SSR specific options * @alpha @@ -463,6 +465,8 @@ export async function resolveConfig( const server = resolveServerOptions(resolvedRoot, config.server) + const optimizeDeps = config.optimizeDeps || {} + const resolved: ResolvedConfig = { ...config, configFile: configFile ? normalizePath(configFile) : undefined, @@ -497,11 +501,12 @@ export async function resolveConfig( packageCache: new Map(), createResolver, optimizeDeps: { - ...config.optimizeDeps, + disabled: config.optimizeDeps === false, + ...optimizeDeps, esbuildOptions: { - keepNames: config.optimizeDeps?.keepNames, + keepNames: optimizeDeps.keepNames, preserveSymlinks: config.resolve?.preserveSymlinks, - ...config.optimizeDeps?.esbuildOptions + ...optimizeDeps.esbuildOptions } }, worker: resolvedWorkerOptions @@ -605,7 +610,7 @@ export async function resolveConfig( } }) - if (config.optimizeDeps?.keepNames) { + if (optimizeDeps.keepNames) { logDeprecationWarning( 'optimizeDeps.keepNames', 'Use "optimizeDeps.esbuildOptions.keepNames" instead.' diff --git a/packages/vite/src/node/optimizer/index.ts b/packages/vite/src/node/optimizer/index.ts index 88c41801938b98..13c322610cf493 100644 --- a/packages/vite/src/node/optimizer/index.ts +++ b/packages/vite/src/node/optimizer/index.ts @@ -101,6 +101,12 @@ export interface DepOptimizationOptions { * @experimental */ extensions?: string[] + /** + * Disables dependencies optimizations + * @default false + * @experimental + */ + disabled?: boolean } export interface DepOptimizationResult { diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index de80ac1147ff0f..bf13ba683a9b93 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -571,6 +571,12 @@ export async function createServer( // error handler middlewares.use(errorMiddleware(server, !!middlewareMode)) + const initOptimizer = () => { + if (!config.optimizeDeps.disabled) { + server._optimizedDeps = createOptimizedDeps(server) + } + } + if (!middlewareMode && httpServer) { let isOptimized = false // overwrite listen to init optimizer before server start @@ -579,7 +585,7 @@ export async function createServer( if (!isOptimized) { try { await container.buildStart({}) - server._optimizedDeps = createOptimizedDeps(server) + initOptimizer() isOptimized = true } catch (e) { httpServer.emit('error', e) @@ -590,7 +596,7 @@ export async function createServer( }) as any } else { await container.buildStart({}) - server._optimizedDeps = createOptimizedDeps(server) + initOptimizer() } return server