diff --git a/packages/vite/src/node/__tests__/config.spec.ts b/packages/vite/src/node/__tests__/config.spec.ts index e2966f262add71..82f4a3973085f8 100644 --- a/packages/vite/src/node/__tests__/config.spec.ts +++ b/packages/vite/src/node/__tests__/config.spec.ts @@ -513,3 +513,97 @@ test('config compat 3', async () => { ] `) }) + +test('preTransformRequests', async () => { + async function testConfig(inlineConfig: InlineConfig) { + return Object.fromEntries( + Object.entries( + (await resolveConfig(inlineConfig, 'serve')).environments, + ).map(([name, e]) => [name, e.dev.preTransformRequests]), + ) + } + + expect( + await testConfig({ + environments: { + custom: {}, + customTrue: { + dev: { + preTransformRequests: true, + }, + }, + customFalse: { + dev: { + preTransformRequests: false, + }, + }, + }, + }), + ).toMatchInlineSnapshot(` + { + "client": true, + "custom": false, + "customFalse": false, + "customTrue": true, + "ssr": false, + } + `) + + expect( + await testConfig({ + server: { + preTransformRequests: true, + }, + environments: { + custom: {}, + customTrue: { + dev: { + preTransformRequests: true, + }, + }, + customFalse: { + dev: { + preTransformRequests: false, + }, + }, + }, + }), + ).toMatchInlineSnapshot(` + { + "client": true, + "custom": true, + "customFalse": false, + "customTrue": true, + "ssr": true, + } + `) + + expect( + await testConfig({ + server: { + preTransformRequests: false, + }, + environments: { + custom: {}, + customTrue: { + dev: { + preTransformRequests: true, + }, + }, + customFalse: { + dev: { + preTransformRequests: false, + }, + }, + }, + }), + ).toMatchInlineSnapshot(` + { + "client": false, + "custom": false, + "customFalse": false, + "customTrue": true, + "ssr": false, + } + `) +}) diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index 9c2e36cd9d9ea3..0d9dcffce4973b 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -739,12 +739,13 @@ export function resolveDevEnvironmentOptions( consumer: 'client' | 'server' | undefined, // Backward compatibility skipSsrTransform?: boolean, + preTransformRequest?: boolean, ): ResolvedDevEnvironmentOptions { const resolved = mergeWithDefaults( { ...configDefaults.dev, sourcemapIgnoreList: isInNodeModules, - preTransformRequests: consumer === 'client', + preTransformRequests: preTransformRequest ?? consumer === 'client', createEnvironment: environmentName === 'client' ? defaultCreateClientDevEnvironment @@ -775,6 +776,7 @@ function resolveEnvironmentOptions( // Backward compatibility skipSsrTransform?: boolean, isSsrTargetWebworkerSet?: boolean, + preTransformRequests?: boolean, ): ResolvedEnvironmentOptions { const isClientEnvironment = environmentName === 'client' const consumer = @@ -806,6 +808,7 @@ function resolveEnvironmentOptions( environmentName, consumer, skipSsrTransform, + preTransformRequests, ), build: resolveBuildEnvironmentOptions( options.build ?? {}, @@ -1196,6 +1199,7 @@ export async function resolveConfig( environmentName, config.experimental?.skipSsrTransform, config.ssr?.target === 'webworker', + config.server?.preTransformRequests, ) }