From af8ca602031daa99692fc2e29f9d6330409e4bc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E6=A0=91=40=E9=98=BF=E9=87=8C?= Date: Mon, 18 Apr 2022 11:39:25 +0800 Subject: [PATCH] feat: enable optimizeDeps.esbuildOptions.loader (#6840) Co-authored-by: bluwy --- packages/vite/src/node/optimizer/index.ts | 5 +++-- packages/vite/src/node/optimizer/scan.ts | 11 ++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/vite/src/node/optimizer/index.ts b/packages/vite/src/node/optimizer/index.ts index 13c322610cf493..3828cb2fbce18b 100644 --- a/packages/vite/src/node/optimizer/index.ts +++ b/packages/vite/src/node/optimizer/index.ts @@ -417,11 +417,12 @@ export async function runOptimizeDeps( try { exportsData = parse(entryContent) as ExportsData } catch { + const loader = esbuildOptions.loader?.[path.extname(filePath)] || 'jsx' debug( - `Unable to parse dependency: ${id}. Trying again with a JSX transform.` + `Unable to parse dependency: ${id}. Trying again with a ${loader} transform.` ) const transformed = await transformWithEsbuild(entryContent, filePath, { - loader: 'jsx' + loader }) // Ensure that optimization won't fail by defaulting '.js' to the JSX parser. // This is useful for packages such as Gatsby. diff --git a/packages/vite/src/node/optimizer/scan.ts b/packages/vite/src/node/optimizer/scan.ts index e940617386eb35..ef59a35b1d22d3 100644 --- a/packages/vite/src/node/optimizer/scan.ts +++ b/packages/vite/src/node/optimizer/scan.ts @@ -463,21 +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 })) } + return { - loader: ext as Loader, + loader, contents } })