diff --git a/packages/vite/src/node/optimizer/index.ts b/packages/vite/src/node/optimizer/index.ts index f8b28bd9882f43..01646d68dcd417 100644 --- a/packages/vite/src/node/optimizer/index.ts +++ b/packages/vite/src/node/optimizer/index.ts @@ -412,10 +412,7 @@ export async function runOptimizeDeps( try { exportsData = parse(entryContent) as ExportsData } catch { - const loader = - (esbuildOptions.loader && - esbuildOptions.loader[path.extname(filePath)]) || - 'jsx' + const loader = esbuildOptions.loader?.[path.extname(filePath)] || 'jsx' debug( `Unable to parse dependency: ${id}. Trying again with a ${loader} transform.` ) diff --git a/packages/vite/src/node/optimizer/scan.ts b/packages/vite/src/node/optimizer/scan.ts index cf566fe5ad6420..ef59a35b1d22d3 100644 --- a/packages/vite/src/node/optimizer/scan.ts +++ b/packages/vite/src/node/optimizer/scan.ts @@ -463,22 +463,26 @@ function esbuildScanPlugin( contents = config.esbuild.jsxInject + `\n` + contents } + const loader = + config.optimizeDeps?.esbuildOptions?.loader?.[`.${ext}`] || + (ext as Loader) + if (contents.includes('import.meta.glob')) { return transformGlob( contents, id, config.root, - ext as Loader, + loader, resolve, config.logger ).then((contents) => ({ - loader: ext as Loader, + loader, contents })) } - const { loader } = config.optimizeDeps?.esbuildOptions ?? {} + return { - loader: ((loader && loader[`.${ext}`]) || ext) as Loader, + loader, contents } })