Skip to content

Commit 446eb38

Browse files
authored
fix(esbuild): inject esbuild helpers correctly for esbuild 0.25.9+ (#20906)
1 parent 3fd6e92 commit 446eb38

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

packages/vite/src/node/__tests__/plugins/esbuild.spec.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -401,10 +401,19 @@ describe('transformWithEsbuild', () => {
401401
describe('injectEsbuildHelpers', () => {
402402
test('injects helpers in IIFE format', () => {
403403
const esbuildCode =
404-
'var $=function(){};var MyLib=function(){"use strict";return 42;}'
404+
'var $=function(){};var MyLib=(function(){"use strict";return 42;})()'
405405
const result = injectEsbuildHelpers(esbuildCode, 'iife')
406406
expect(result).toBe(
407-
'var MyLib=function(){"use strict";var $=function(){};return 42;}',
407+
'var MyLib=(function(){"use strict";var $=function(){};return 42;})()',
408+
)
409+
})
410+
411+
test('injects helpers in IIFE format (pre esbuild 0.25.9)', () => {
412+
const esbuildCode =
413+
'var $=function(){};var MyLib=function(){"use strict";return 42;}()'
414+
const result = injectEsbuildHelpers(esbuildCode, 'iife')
415+
expect(result).toBe(
416+
'var MyLib=function(){"use strict";var $=function(){};return 42;}()',
408417
)
409418
})
410419

@@ -419,7 +428,7 @@ describe('injectEsbuildHelpers', () => {
419428

420429
test('handles helpers with special characters', () => {
421430
const esbuildCode =
422-
'var $$=function(){};var MyLib=function(){"use strict";return 42;}'
431+
'var $$=function(){};var MyLib=(function(){"use strict";return 42;})()'
423432
const result = injectEsbuildHelpers(esbuildCode, 'iife')
424433
expect(result).toContain('"use strict";var $$=function(){};')
425434
})

packages/vite/src/node/plugins/esbuild.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const debug = createDebugger('vite:esbuild')
2929
// IIFE content looks like `var MyLib = function() {`.
3030
// Spaces are removed and parameters are mangled when minified
3131
const IIFE_BEGIN_RE =
32-
/(?:const|var)\s+\S+\s*=\s*function\([^()]*\)\s*\{\s*"use strict";/
32+
/(?:const|var)\s+\S+\s*=\s*\(?function\([^()]*\)\s*\{\s*"use strict";/
3333

3434
const validExtensionRE = /\.\w+$/
3535
const jsxExtensionsRE = /\.(?:j|t)sx\b/

0 commit comments

Comments
 (0)