From 270bd3a72dbf8dfb839909545659dde1d14e1e38 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Fri, 13 Aug 2021 18:33:32 -0700 Subject: [PATCH] fix: skip optimizer run on non-JS script tags (#4565) --- packages/vite/src/node/optimizer/scan.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/vite/src/node/optimizer/scan.ts b/packages/vite/src/node/optimizer/scan.ts index e8f58e1da10385..26ad02675e518a 100644 --- a/packages/vite/src/node/optimizer/scan.ts +++ b/packages/vite/src/node/optimizer/scan.ts @@ -135,6 +135,7 @@ const scriptModuleRE = export const scriptRE = /(]*>|>))(.*?)<\/script>/gims export const commentRE = // const srcRE = /\bsrc\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/im +const typeRE = /\btype\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/im const langRE = /\blang\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s'">]+))/im function esbuildScanPlugin( @@ -207,9 +208,23 @@ function esbuildScanPlugin( while ((match = regex.exec(raw))) { const [, openTag, content] = match const srcMatch = openTag.match(srcRE) + const typeMatch = openTag.match(typeRE) const langMatch = openTag.match(langRE) + const type = + typeMatch && (typeMatch[1] || typeMatch[2] || typeMatch[3]) const lang = langMatch && (langMatch[1] || langMatch[2] || langMatch[3]) + // skip type="application/ld+json" and other non-JS types + if ( + type && + !( + type.includes('javascript') || + type.includes('ecmascript') || + type === 'module' + ) + ) { + continue + } if (lang === 'ts' || lang === 'tsx' || lang === 'jsx') { loader = lang }