From 08a7eb51ef84093eaed24fdcf8acef9e9fc65fd5 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Tue, 18 Feb 2025 12:31:19 +0900 Subject: [PATCH 1/2] fix: allow chunk.modules mutation on js side --- packages/vite/src/node/build.ts | 8 ++++++++ packages/vite/types/metadata.d.ts | 1 + 2 files changed, 9 insertions(+) diff --git a/packages/vite/src/node/build.ts b/packages/vite/src/node/build.ts index 6eb9fc2e8f827a..e4500467d8d7b3 100644 --- a/packages/vite/src/node/build.ts +++ b/packages/vite/src/node/build.ts @@ -1350,9 +1350,17 @@ function injectChunkMetadata( chunkMetadataMap.set(key, { importedAssets: new Set(), importedCss: new Set(), + // use shared `chunk.modules` object + // to allow mutation on js side plugins + __modules: chunk.modules, }) } chunk.viteMetadata = chunkMetadataMap.get(key) + Object.defineProperty(chunk, 'modules', { + get() { + return chunk.viteMetadata!.__modules + }, + }) } function injectEnvironmentInContext( diff --git a/packages/vite/types/metadata.d.ts b/packages/vite/types/metadata.d.ts index e813b7a64b0abc..3c30badd4fbcc7 100644 --- a/packages/vite/types/metadata.d.ts +++ b/packages/vite/types/metadata.d.ts @@ -1,6 +1,7 @@ export interface ChunkMetadata { importedAssets: Set importedCss: Set + __modules: any } declare module 'rolldown' { From 3e2a58c2791adc8d48b39b1a28adc8eb70a17175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0=20/=20green?= Date: Wed, 19 Feb 2025 22:42:22 +0900 Subject: [PATCH 2/2] chore: comment --- packages/vite/src/node/build.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/vite/src/node/build.ts b/packages/vite/src/node/build.ts index e4500467d8d7b3..4dc79efe79726b 100644 --- a/packages/vite/src/node/build.ts +++ b/packages/vite/src/node/build.ts @@ -1350,6 +1350,7 @@ function injectChunkMetadata( chunkMetadataMap.set(key, { importedAssets: new Set(), importedCss: new Set(), + // NOTE: adding this as a workaround for now ideally we'd want to remove this workaround // use shared `chunk.modules` object // to allow mutation on js side plugins __modules: chunk.modules,