From 08cf2a0a116a41a1662320dbf92d52c0890b2c98 Mon Sep 17 00:00:00 2001 From: sapphi-red Date: Thu, 26 May 2022 20:22:39 +0900 Subject: [PATCH 1/4] fix(optimizer): transpile before calling `transformGlobImport` --- packages/vite/src/node/optimizer/scan.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/vite/src/node/optimizer/scan.ts b/packages/vite/src/node/optimizer/scan.ts index 6f609991ecc7fb..5a0bcd6da6df09 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,12 +299,17 @@ function esbuildScanPlugin( const key = `${path}?id=${scriptId++}` if (contents.includes('import.meta.glob')) { + // transpile because `transformGlobImport` only expects js + const transpiledContents = ( + await transform(contents, { loader }) + ).code + scripts[key] = { - loader: 'js', + loader: 'js', // since it is transpiled contents: ( await transformGlobImport( - contents, + transpiledContents, path, config.root, resolve From 20cef8cc3cbe831f6ae98047aaf0066167c258cc Mon Sep 17 00:00:00 2001 From: sapphi-red Date: Thu, 26 May 2022 20:40:44 +0900 Subject: [PATCH 2/4] test(optimizer): add import.meta.glob inside astro --- playground/optimize-deps/index.astro | 2 ++ 1 file changed, 2 insertions(+) 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 @@ From a21fcc52e36e47da7e1871c58920c7b4fe5c82b9 Mon Sep 17 00:00:00 2001 From: sapphi-red Date: Fri, 27 May 2022 00:48:47 +0900 Subject: [PATCH 3/4] fix: skip transpile if it is already js --- packages/vite/src/node/optimizer/scan.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/vite/src/node/optimizer/scan.ts b/packages/vite/src/node/optimizer/scan.ts index 5a0bcd6da6df09..7db469eaa37c8f 100644 --- a/packages/vite/src/node/optimizer/scan.ts +++ b/packages/vite/src/node/optimizer/scan.ts @@ -299,10 +299,14 @@ function esbuildScanPlugin( const key = `${path}?id=${scriptId++}` if (contents.includes('import.meta.glob')) { + let transpiledContents // transpile because `transformGlobImport` only expects js - const transpiledContents = ( - await transform(contents, { loader }) - ).code + if (loader !== 'js') { + transpiledContents = (await transform(contents, { loader })) + .code + } else { + transpiledContents = contents + } scripts[key] = { loader: 'js', // since it is transpiled From 7503d1ae3856fa42774d6400cb20e66cdb476c67 Mon Sep 17 00:00:00 2001 From: sapphi-red Date: Fri, 27 May 2022 01:01:34 +0900 Subject: [PATCH 4/4] fix: non transpiled content was returned --- packages/vite/src/node/optimizer/scan.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite/src/node/optimizer/scan.ts b/packages/vite/src/node/optimizer/scan.ts index 7db469eaa37c8f..63d2d265e10e27 100644 --- a/packages/vite/src/node/optimizer/scan.ts +++ b/packages/vite/src/node/optimizer/scan.ts @@ -318,7 +318,7 @@ function esbuildScanPlugin( config.root, resolve ) - )?.s.toString() || contents + )?.s.toString() || transpiledContents } } else { scripts[key] = {