diff --git a/packages/vite/src/node/__tests__/plugins/esbuild.spec.ts b/packages/vite/src/node/__tests__/plugins/esbuild.spec.ts index 7f5e90db5f68fd..22952ca72da04e 100644 --- a/packages/vite/src/node/__tests__/plugins/esbuild.spec.ts +++ b/packages/vite/src/node/__tests__/plugins/esbuild.spec.ts @@ -401,10 +401,19 @@ describe('transformWithEsbuild', () => { describe('injectEsbuildHelpers', () => { test('injects helpers in IIFE format', () => { const esbuildCode = - 'var $=function(){};var MyLib=function(){"use strict";return 42;}' + 'var $=function(){};var MyLib=(function(){"use strict";return 42;})()' const result = injectEsbuildHelpers(esbuildCode, 'iife') expect(result).toBe( - 'var MyLib=function(){"use strict";var $=function(){};return 42;}', + 'var MyLib=(function(){"use strict";var $=function(){};return 42;})()', + ) + }) + + test('injects helpers in IIFE format (pre esbuild 0.25.9)', () => { + const esbuildCode = + 'var $=function(){};var MyLib=function(){"use strict";return 42;}()' + const result = injectEsbuildHelpers(esbuildCode, 'iife') + expect(result).toBe( + 'var MyLib=function(){"use strict";var $=function(){};return 42;}()', ) }) @@ -419,7 +428,7 @@ describe('injectEsbuildHelpers', () => { test('handles helpers with special characters', () => { const esbuildCode = - 'var $$=function(){};var MyLib=function(){"use strict";return 42;}' + 'var $$=function(){};var MyLib=(function(){"use strict";return 42;})()' const result = injectEsbuildHelpers(esbuildCode, 'iife') expect(result).toContain('"use strict";var $$=function(){};') }) diff --git a/packages/vite/src/node/plugins/esbuild.ts b/packages/vite/src/node/plugins/esbuild.ts index d48d5a738d6230..c47c310d926a3d 100644 --- a/packages/vite/src/node/plugins/esbuild.ts +++ b/packages/vite/src/node/plugins/esbuild.ts @@ -29,7 +29,7 @@ const debug = createDebugger('vite:esbuild') // IIFE content looks like `var MyLib = function() {`. // Spaces are removed and parameters are mangled when minified const IIFE_BEGIN_RE = - /(?:const|var)\s+\S+\s*=\s*function\([^()]*\)\s*\{\s*"use strict";/ + /(?:const|var)\s+\S+\s*=\s*\(?function\([^()]*\)\s*\{\s*"use strict";/ const validExtensionRE = /\.\w+$/ const jsxExtensionsRE = /\.(?:j|t)sx\b/