From 939b680d29650d1a8718ca86bb8369bc6c9a4845 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Mel=C3=A9n?= Date: Sat, 5 Jun 2021 21:32:59 +0200 Subject: [PATCH 1/2] fix: Wrap glob output in function invocation --- .../playground/glob-import/__tests__/glob-import.spec.ts | 6 ++++++ packages/playground/glob-import/index.html | 7 +++++++ packages/playground/glob-import/side-effect/writetodom.js | 4 ++++ packages/vite/src/node/importGlob.ts | 2 +- 4 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 packages/playground/glob-import/side-effect/writetodom.js diff --git a/packages/playground/glob-import/__tests__/glob-import.spec.ts b/packages/playground/glob-import/__tests__/glob-import.spec.ts index 4377f7961ef229..9bedbf5edcd507 100644 --- a/packages/playground/glob-import/__tests__/glob-import.spec.ts +++ b/packages/playground/glob-import/__tests__/glob-import.spec.ts @@ -51,6 +51,12 @@ test('should work', async () => { ) }) +test('unassigned import processes', async () => { + expect(await page.textContent('.side-effect-result')).toBe( + 'Hello from side effect' + ) +}) + if (!isBuild) { test('hmr for adding/removing files', async () => { addFile('dir/a.js', '') diff --git a/packages/playground/glob-import/index.html b/packages/playground/glob-import/index.html index b38a194e21b4f2..165be962932165 100644 --- a/packages/playground/glob-import/index.html +++ b/packages/playground/glob-import/index.html @@ -1,4 +1,5 @@

+

 
 
 
diff --git a/packages/playground/glob-import/side-effect/writetodom.js b/packages/playground/glob-import/side-effect/writetodom.js
new file mode 100644
index 00000000000000..e2ab04ba7f5cbe
--- /dev/null
+++ b/packages/playground/glob-import/side-effect/writetodom.js
@@ -0,0 +1,4 @@
+/* global document */
+document &&
+  (document.querySelector('.side-effect-result').textContent =
+    'Hello from side effect')
diff --git a/packages/vite/src/node/importGlob.ts b/packages/vite/src/node/importGlob.ts
index 75a57953894e36..722fb84bac5f90 100644
--- a/packages/vite/src/node/importGlob.ts
+++ b/packages/vite/src/node/importGlob.ts
@@ -98,7 +98,7 @@ export async function transformImportGlob(
   return {
     imports,
     importsString,
-    exp: `{${entries}}`,
+    exp: `Object.assign({${entries}})`,
     endIndex,
     isEager,
     pattern,

From c19b3adc107d4f710300da6985337556154a93e3 Mon Sep 17 00:00:00 2001
From: patak-dev 
Date: Tue, 10 May 2022 21:31:44 +0200
Subject: [PATCH 2/2] test: update snapshots

---
 .../__snapshots__/fixture.test.ts.snap        | 120 +++++++++---------
 1 file changed, 60 insertions(+), 60 deletions(-)

diff --git a/packages/vite/src/node/__tests__/plugins/importGlob/__snapshots__/fixture.test.ts.snap b/packages/vite/src/node/__tests__/plugins/importGlob/__snapshots__/fixture.test.ts.snap
index 23e511a50545f7..61ff6eeb4d2fc7 100644
--- a/packages/vite/src/node/__tests__/plugins/importGlob/__snapshots__/fixture.test.ts.snap
+++ b/packages/vite/src/node/__tests__/plugins/importGlob/__snapshots__/fixture.test.ts.snap
@@ -10,67 +10,67 @@ import { name as __vite_glob_3_2 } from \\"./modules/index.ts\\"
 import { default as __vite_glob_5_0 } from \\"./modules/a.ts?raw\\"
 import { default as __vite_glob_5_1 } from \\"./modules/b.ts?raw\\"
 import \\"../../../../../../types/importMeta\\";
-export const basic = {
+export const basic = Object.assign({
 \\"./modules/a.ts\\": () => import(\\"./modules/a.ts\\"),
 \\"./modules/b.ts\\": () => import(\\"./modules/b.ts\\"),
 \\"./modules/index.ts\\": () => import(\\"./modules/index.ts\\")
-};
-export const basicEager = {
+});
+export const basicEager = Object.assign({
 \\"./modules/a.ts\\": __vite_glob_1_0,
 \\"./modules/b.ts\\": __vite_glob_1_1,
 \\"./modules/index.ts\\": __vite_glob_1_2
-};
-export const ignore = {
+});
+export const ignore = Object.assign({
 \\"./modules/a.ts\\": () => import(\\"./modules/a.ts\\"),
 \\"./modules/b.ts\\": () => import(\\"./modules/b.ts\\")
-};
-export const namedEager = {
+});
+export const namedEager = Object.assign({
 \\"./modules/a.ts\\": __vite_glob_3_0,
 \\"./modules/b.ts\\": __vite_glob_3_1,
 \\"./modules/index.ts\\": __vite_glob_3_2
-};
-export const namedDefault = {
+});
+export const namedDefault = Object.assign({
 \\"./modules/a.ts\\": () => import(\\"./modules/a.ts\\").then(m => m[\\"default\\"]),
 \\"./modules/b.ts\\": () => import(\\"./modules/b.ts\\").then(m => m[\\"default\\"]),
 \\"./modules/index.ts\\": () => import(\\"./modules/index.ts\\").then(m => m[\\"default\\"])
-};
-export const eagerAs = {
+});
+export const eagerAs = Object.assign({
 \\"./modules/a.ts\\": __vite_glob_5_0,
 \\"./modules/b.ts\\": __vite_glob_5_1
-};
-export const rawImportModule = {
+});
+export const rawImportModule = Object.assign({
 \\"./modules/a.ts\\": () => import(\\"./modules/a.ts?raw\\"),
 \\"./modules/b.ts\\": () => import(\\"./modules/b.ts?raw\\")
-};
-export const excludeSelf = {
+});
+export const excludeSelf = Object.assign({
 \\"./sibling.ts\\": () => import(\\"./sibling.ts\\")
-};
-export const customQueryString = {
+});
+export const customQueryString = Object.assign({
 \\"./sibling.ts\\": () => import(\\"./sibling.ts?custom\\")
-};
-export const customQueryObject = {
+});
+export const customQueryObject = Object.assign({
 \\"./sibling.ts\\": () => import(\\"./sibling.ts?foo=bar&raw=true\\")
-};
-export const parent = {
+});
+export const parent = Object.assign({
 
-};
-export const rootMixedRelative = {
+});
+export const rootMixedRelative = Object.assign({
 \\"/css.spec.ts\\": () => import(\\"../../css.spec.ts?url\\").then(m => m[\\"default\\"]),
 \\"/define.spec.ts\\": () => import(\\"../../define.spec.ts?url\\").then(m => m[\\"default\\"]),
 \\"/import.spec.ts\\": () => import(\\"../../import.spec.ts?url\\").then(m => m[\\"default\\"]),
 \\"/importGlob/fixture-b/a.ts\\": () => import(\\"../fixture-b/a.ts?url\\").then(m => m[\\"default\\"]),
 \\"/importGlob/fixture-b/b.ts\\": () => import(\\"../fixture-b/b.ts?url\\").then(m => m[\\"default\\"]),
 \\"/importGlob/fixture-b/index.ts\\": () => import(\\"../fixture-b/index.ts?url\\").then(m => m[\\"default\\"])
-};
-export const cleverCwd1 = {
+});
+export const cleverCwd1 = Object.assign({
 \\"./node_modules/framework/pages/hello.page.js\\": () => import(\\"./node_modules/framework/pages/hello.page.js\\")
-};
-export const cleverCwd2 = {
+});
+export const cleverCwd2 = Object.assign({
 \\"./modules/a.ts\\": () => import(\\"./modules/a.ts\\"),
 \\"./modules/b.ts\\": () => import(\\"./modules/b.ts\\"),
 \\"../fixture-b/a.ts\\": () => import(\\"../fixture-b/a.ts\\"),
 \\"../fixture-b/b.ts\\": () => import(\\"../fixture-b/b.ts\\")
-};
+});
 "
 `;
 
@@ -84,79 +84,79 @@ import { name as __vite_glob_3_2 } from \\"./modules/index.ts\\"
 import { default as __vite_glob_5_0 } from \\"./modules/a.ts?raw\\"
 import { default as __vite_glob_5_1 } from \\"./modules/b.ts?raw\\"
 import \\"../../../../../../types/importMeta\\";
-export const basic = {
+export const basic = Object.assign({
 \\"./modules/a.ts\\": () => import(\\"./modules/a.ts\\"),
 \\"./modules/b.ts\\": () => import(\\"./modules/b.ts\\"),
 \\"./modules/index.ts\\": () => import(\\"./modules/index.ts\\")
-};
-export const basicEager = {
+});
+export const basicEager = Object.assign({
 \\"./modules/a.ts\\": __vite_glob_1_0,
 \\"./modules/b.ts\\": __vite_glob_1_1,
 \\"./modules/index.ts\\": __vite_glob_1_2
-};
-export const ignore = {
+});
+export const ignore = Object.assign({
 \\"./modules/a.ts\\": () => import(\\"./modules/a.ts\\"),
 \\"./modules/b.ts\\": () => import(\\"./modules/b.ts\\")
-};
-export const namedEager = {
+});
+export const namedEager = Object.assign({
 \\"./modules/a.ts\\": __vite_glob_3_0,
 \\"./modules/b.ts\\": __vite_glob_3_1,
 \\"./modules/index.ts\\": __vite_glob_3_2
-};
-export const namedDefault = {
+});
+export const namedDefault = Object.assign({
 \\"./modules/a.ts\\": () => import(\\"./modules/a.ts\\").then(m => m[\\"default\\"]),
 \\"./modules/b.ts\\": () => import(\\"./modules/b.ts\\").then(m => m[\\"default\\"]),
 \\"./modules/index.ts\\": () => import(\\"./modules/index.ts\\").then(m => m[\\"default\\"])
-};
-export const eagerAs = {
+});
+export const eagerAs = Object.assign({
 \\"./modules/a.ts\\": __vite_glob_5_0,
 \\"./modules/b.ts\\": __vite_glob_5_1
-};
-export const rawImportModule = {
+});
+export const rawImportModule = Object.assign({
 \\"./modules/a.ts\\": () => import(\\"./modules/a.ts?raw\\"),
 \\"./modules/b.ts\\": () => import(\\"./modules/b.ts?raw\\")
-};
-export const excludeSelf = {
+});
+export const excludeSelf = Object.assign({
 \\"./sibling.ts\\": () => import(\\"./sibling.ts\\")
-};
-export const customQueryString = {
+});
+export const customQueryString = Object.assign({
 \\"./sibling.ts\\": () => import(\\"./sibling.ts?custom&lang.ts\\")
-};
-export const customQueryObject = {
+});
+export const customQueryObject = Object.assign({
 \\"./sibling.ts\\": () => import(\\"./sibling.ts?foo=bar&raw=true&lang.ts\\")
-};
-export const parent = {
+});
+export const parent = Object.assign({
 
-};
-export const rootMixedRelative = {
+});
+export const rootMixedRelative = Object.assign({
 \\"/css.spec.ts\\": () => import(\\"../../css.spec.ts?url&lang.ts\\").then(m => m[\\"default\\"]),
 \\"/define.spec.ts\\": () => import(\\"../../define.spec.ts?url&lang.ts\\").then(m => m[\\"default\\"]),
 \\"/import.spec.ts\\": () => import(\\"../../import.spec.ts?url&lang.ts\\").then(m => m[\\"default\\"]),
 \\"/importGlob/fixture-b/a.ts\\": () => import(\\"../fixture-b/a.ts?url&lang.ts\\").then(m => m[\\"default\\"]),
 \\"/importGlob/fixture-b/b.ts\\": () => import(\\"../fixture-b/b.ts?url&lang.ts\\").then(m => m[\\"default\\"]),
 \\"/importGlob/fixture-b/index.ts\\": () => import(\\"../fixture-b/index.ts?url&lang.ts\\").then(m => m[\\"default\\"])
-};
-export const cleverCwd1 = {
+});
+export const cleverCwd1 = Object.assign({
 \\"./node_modules/framework/pages/hello.page.js\\": () => import(\\"./node_modules/framework/pages/hello.page.js\\")
-};
-export const cleverCwd2 = {
+});
+export const cleverCwd2 = Object.assign({
 \\"./modules/a.ts\\": () => import(\\"./modules/a.ts\\"),
 \\"./modules/b.ts\\": () => import(\\"./modules/b.ts\\"),
 \\"../fixture-b/a.ts\\": () => import(\\"../fixture-b/a.ts\\"),
 \\"../fixture-b/b.ts\\": () => import(\\"../fixture-b/b.ts\\")
-};
+});
 "
 `;
 
 exports[`fixture > virtual modules 1`] = `
-"{
+"Object.assign({
 \\"/modules/a.ts\\": () => import(\\"/modules/a.ts\\"),
 \\"/modules/b.ts\\": () => import(\\"/modules/b.ts\\"),
 \\"/modules/index.ts\\": () => import(\\"/modules/index.ts\\")
-}
-{
+})
+Object.assign({
 \\"/../fixture-b/a.ts\\": () => import(\\"/../fixture-b/a.ts\\"),
 \\"/../fixture-b/b.ts\\": () => import(\\"/../fixture-b/b.ts\\"),
 \\"/../fixture-b/index.ts\\": () => import(\\"/../fixture-b/index.ts\\")
-}"
+})"
 `;