diff --git a/packages/vite/src/node/optimizer/scan.ts b/packages/vite/src/node/optimizer/scan.ts index 6f609991ecc7fb..63d2d265e10e27 100644 --- a/packages/vite/src/node/optimizer/scan.ts +++ b/packages/vite/src/node/optimizer/scan.ts @@ -3,7 +3,7 @@ import path from 'path' import { performance } from 'perf_hooks' import glob from 'fast-glob' import type { Loader, OnLoadResult, Plugin } from 'esbuild' -import { build } from 'esbuild' +import { build, transform } from 'esbuild' import colors from 'picocolors' import type { ResolvedConfig } from '..' import { @@ -299,17 +299,26 @@ function esbuildScanPlugin( const key = `${path}?id=${scriptId++}` if (contents.includes('import.meta.glob')) { + let transpiledContents + // transpile because `transformGlobImport` only expects js + if (loader !== 'js') { + transpiledContents = (await transform(contents, { loader })) + .code + } else { + transpiledContents = contents + } + scripts[key] = { - loader: 'js', + loader: 'js', // since it is transpiled contents: ( await transformGlobImport( - contents, + transpiledContents, path, config.root, resolve ) - )?.s.toString() || contents + )?.s.toString() || transpiledContents } } else { scripts[key] = { diff --git a/playground/optimize-deps/index.astro b/playground/optimize-deps/index.astro index 95790f5bf3a0d5..4425a8b0f6b1ee 100644 --- a/playground/optimize-deps/index.astro +++ b/playground/optimize-deps/index.astro @@ -1,4 +1,6 @@