From fe649df7505e316f98f50aa4f0b4b7f56069b3f5 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Tue, 19 Aug 2025 14:57:08 +0900 Subject: [PATCH 01/12] fix(rsc): improve `optimizeDeps.exclude` suggestion --- packages/plugin-rsc/src/plugin.ts | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 559ec7d38..23e785c58 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -979,6 +979,42 @@ function vitePluginUseClient( return [ { name: 'rsc:use-client', + config() { + return { + environments: { + client: { + optimizeDeps: { + // TODO: rolldown + esbuildOptions: { + plugins: [ + { + name: 'custom-metafile', + setup(build) { + build.onEnd((result) => { + // skip optimizer scan + if (!result.metafile?.inputs) return + + const optimizedFiles = Object.keys( + result.metafile.inputs, + ) + const metadata = { optimizedFiles } + fs.writeFileSync( + path.join( + build.initialOptions.outdir!, + '_metadata-vite-rsc.json', + ), + JSON.stringify(metadata, null, 2), + ) + }) + }, + }, + ], + }, + }, + }, + }, + } + }, async transform(code, id) { if (this.environment.name !== serverEnvironmentName) return if (!code.includes('use client')) return From 3467dda6de29ca74cf6e560921a642d241169530 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 20 Aug 2025 08:41:53 +0900 Subject: [PATCH 02/12] wip --- packages/plugin-rsc/src/plugin.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 23e785c58..df04e4cc8 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -976,6 +976,9 @@ function vitePluginUseClient( const debug = createDebug('vite-rsc:use-client') + const optimizerPluginEsbuild = {} + const optimizerPluginRolldown = {} + return [ { name: 'rsc:use-client', From c330414dcdae6b744e4a3a179447975c7824ab46 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 20 Aug 2025 10:23:39 +0900 Subject: [PATCH 03/12] wip --- packages/plugin-rsc/src/plugin.ts | 62 ++++++++++++++++++------------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index bb7524dfb..035e4068c 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -11,6 +11,7 @@ import { type BuilderOptions, type DevEnvironment, type EnvironmentModuleNode, + type EnvironmentOptions, type Plugin, type ResolvedConfig, type Rollup, @@ -976,8 +977,40 @@ function vitePluginUseClient( const debug = createDebug('vite-rsc:use-client') - const optimizerPluginEsbuild = {} - const optimizerPluginRolldown = {} + const EXTRA_OPTIMIZER_METADATA_FILE = '_metadata-rsc-extra.json' + + type ExtraOptimizerMetadata = { + optimizedFiles: string[] + } + + type EsbuildPlugin = NonNullable< + NonNullable['plugins'] + >[number] + + function optimizerPluginEsbuild(): EsbuildPlugin { + return { + name: 'vite-rsc-metafile', + setup(build) { + build.onEnd((result) => { + // skip scan + if (!result.metafile?.inputs || !build.initialOptions.outdir) return + + const optimizedFiles = Object.keys(result.metafile.inputs) + const metadata: ExtraOptimizerMetadata = { optimizedFiles } + fs.writeFileSync( + path.join( + build.initialOptions.outdir, + EXTRA_OPTIMIZER_METADATA_FILE, + ), + JSON.stringify(metadata, null, 2), + ) + }) + }, + } + } + + // TODO: rolldown + // const optimizerPluginRolldown = {} return [ { @@ -987,31 +1020,8 @@ function vitePluginUseClient( environments: { client: { optimizeDeps: { - // TODO: rolldown esbuildOptions: { - plugins: [ - { - name: 'custom-metafile', - setup(build) { - build.onEnd((result) => { - // skip optimizer scan - if (!result.metafile?.inputs) return - - const optimizedFiles = Object.keys( - result.metafile.inputs, - ) - const metadata = { optimizedFiles } - fs.writeFileSync( - path.join( - build.initialOptions.outdir!, - '_metadata-vite-rsc.json', - ), - JSON.stringify(metadata, null, 2), - ) - }) - }, - }, - ], + plugins: [optimizerPluginEsbuild()], }, }, }, From 832260de19a4a577a1409553be3b1accd2ac1f7c Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 20 Aug 2025 10:41:12 +0900 Subject: [PATCH 04/12] wip --- packages/plugin-rsc/src/plugin.ts | 47 ++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 035e4068c..8094bf161 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -11,7 +11,6 @@ import { type BuilderOptions, type DevEnvironment, type EnvironmentModuleNode, - type EnvironmentOptions, type Plugin, type ResolvedConfig, type Rollup, @@ -957,21 +956,18 @@ function vitePluginUseClient( const browserEnvironmentName = useClientPluginOptions.environment?.browser ?? 'client' - // TODO: warning for late optimizer discovery + let optimizerMetadata: ExtraOptimizerMetadata | undefined + function warnInoncistentClientOptimization( ctx: Rollup.TransformPluginContext, id: string, ) { - const { depsOptimizer } = server.environments.client - if (depsOptimizer) { - for (const dep of Object.values(depsOptimizer.metadata.optimized)) { - if (dep.src === id) { - ctx.warn( - `client component dependency is inconsistently optimized. ` + - `It's recommended to add the dependency to 'optimizeDeps.exclude'.`, - ) - } - } + id = path.relative(process.cwd(), id) + if (optimizerMetadata?.optimizedFiles.includes(id)) { + ctx.warn( + `client component dependency is inconsistently optimized. ` + + `It's recommended to add the dependency to 'optimizeDeps.exclude'.`, + ) } } @@ -996,20 +992,19 @@ function vitePluginUseClient( if (!result.metafile?.inputs || !build.initialOptions.outdir) return const optimizedFiles = Object.keys(result.metafile.inputs) - const metadata: ExtraOptimizerMetadata = { optimizedFiles } + optimizerMetadata = { optimizedFiles } fs.writeFileSync( path.join( build.initialOptions.outdir, EXTRA_OPTIMIZER_METADATA_FILE, ), - JSON.stringify(metadata, null, 2), + JSON.stringify(optimizerMetadata, null, 2), ) }) }, } } - - // TODO: rolldown + // TODO: port to rolldown // const optimizerPluginRolldown = {} return [ @@ -1028,6 +1023,26 @@ function vitePluginUseClient( }, } }, + configResolved(config) { + if (config.command === 'serve') { + // load metadata file + // https://github.com/vitejs/vite/blob/84079a84ad94de4c1ef4f1bdb2ab448ff2c01196/packages/vite/src/node/optimizer/index.ts#L941 + const metadataFile = path.join( + config.cacheDir, + 'deps', + EXTRA_OPTIMIZER_METADATA_FILE, + ) + if (fs.existsSync(metadataFile)) { + try { + optimizerMetadata = JSON.parse( + fs.readFileSync(metadataFile, 'utf-8'), + ) + } catch (e) { + this.warn(`failed to load '${metadataFile}'`) + } + } + } + }, async transform(code, id) { if (this.environment.name !== serverEnvironmentName) return if (!code.includes('use client')) return From 1cf9f65112756db830928db0a51d8d47ecfe288c Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 20 Aug 2025 10:42:52 +0900 Subject: [PATCH 05/12] comment --- packages/plugin-rsc/src/plugin.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 8094bf161..4d1172ecc 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -962,6 +962,8 @@ function vitePluginUseClient( ctx: Rollup.TransformPluginContext, id: string, ) { + // metafile data is relative to cwd + // https://github.com/vitejs/vite/blob/dd96c2cd831ecba3874458b318ad4f0a7f173736/packages/vite/src/node/optimizer/index.ts#L644 id = path.relative(process.cwd(), id) if (optimizerMetadata?.optimizedFiles.includes(id)) { ctx.warn( From f1aadb1b903341752b7e669eaaf8f630824744eb Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 20 Aug 2025 10:49:22 +0900 Subject: [PATCH 06/12] fix: windows path --- packages/plugin-rsc/src/plugin.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 4d1172ecc..3e31115fe 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -964,7 +964,7 @@ function vitePluginUseClient( ) { // metafile data is relative to cwd // https://github.com/vitejs/vite/blob/dd96c2cd831ecba3874458b318ad4f0a7f173736/packages/vite/src/node/optimizer/index.ts#L644 - id = path.relative(process.cwd(), id) + id = normalizePath(path.relative(process.cwd(), id)) if (optimizerMetadata?.optimizedFiles.includes(id)) { ctx.warn( `client component dependency is inconsistently optimized. ` + From d9b874f3d889f06778eb34200f01048f32200992 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 20 Aug 2025 10:49:49 +0900 Subject: [PATCH 07/12] chore: comment --- packages/plugin-rsc/src/plugin.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 3e31115fe..1eacd3ab2 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -962,7 +962,7 @@ function vitePluginUseClient( ctx: Rollup.TransformPluginContext, id: string, ) { - // metafile data is relative to cwd + // path in metafile is relative to cwd // https://github.com/vitejs/vite/blob/dd96c2cd831ecba3874458b318ad4f0a7f173736/packages/vite/src/node/optimizer/index.ts#L644 id = normalizePath(path.relative(process.cwd(), id)) if (optimizerMetadata?.optimizedFiles.includes(id)) { From 9fa558a7e104bd7a657cae7dc509ddcb0ce3e620 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 20 Aug 2025 11:07:09 +0900 Subject: [PATCH 08/12] fix: rolldown --- packages/plugin-rsc/src/plugin.ts | 35 ++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 1eacd3ab2..7f38235be 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -1006,8 +1006,22 @@ function vitePluginUseClient( }, } } - // TODO: port to rolldown - // const optimizerPluginRolldown = {} + function optimizerPluginRolldown(): Rollup.Plugin { + return { + name: 'vite-rsc-metafile', + writeBundle(options) { + assert(options.dir) + const optimizedFiles = [...this.getModuleIds()].map((id) => + path.relative(process.cwd(), id), + ) + optimizerMetadata = { optimizedFiles } + fs.writeFileSync( + path.join(options.dir!, EXTRA_OPTIMIZER_METADATA_FILE), + JSON.stringify(optimizerMetadata, null, 2), + ) + }, + } + } return [ { @@ -1016,11 +1030,18 @@ function vitePluginUseClient( return { environments: { client: { - optimizeDeps: { - esbuildOptions: { - plugins: [optimizerPluginEsbuild()], - }, - }, + optimizeDeps: + 'rolldownVersion' in this.meta + ? ({ + rolldownOptions: { + plugins: [optimizerPluginRolldown()], + }, + } as any) + : { + esbuildOptions: { + plugins: [optimizerPluginEsbuild()], + }, + }, }, }, } From 96a5c620154730d5cfd9c7f309b43fb6b3a8c883 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 20 Aug 2025 11:18:41 +0900 Subject: [PATCH 09/12] refactor: separate to extraOptimizerMetadataPlugin --- packages/plugin-rsc/src/plugin.ts | 197 +++++++++++++++++------------- 1 file changed, 109 insertions(+), 88 deletions(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 7f38235be..618424b51 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -958,6 +958,7 @@ function vitePluginUseClient( let optimizerMetadata: ExtraOptimizerMetadata | undefined + // TODO: warning for late optimizer discovery function warnInoncistentClientOptimization( ctx: Rollup.TransformPluginContext, id: string, @@ -975,97 +976,9 @@ function vitePluginUseClient( const debug = createDebug('vite-rsc:use-client') - const EXTRA_OPTIMIZER_METADATA_FILE = '_metadata-rsc-extra.json' - - type ExtraOptimizerMetadata = { - optimizedFiles: string[] - } - - type EsbuildPlugin = NonNullable< - NonNullable['plugins'] - >[number] - - function optimizerPluginEsbuild(): EsbuildPlugin { - return { - name: 'vite-rsc-metafile', - setup(build) { - build.onEnd((result) => { - // skip scan - if (!result.metafile?.inputs || !build.initialOptions.outdir) return - - const optimizedFiles = Object.keys(result.metafile.inputs) - optimizerMetadata = { optimizedFiles } - fs.writeFileSync( - path.join( - build.initialOptions.outdir, - EXTRA_OPTIMIZER_METADATA_FILE, - ), - JSON.stringify(optimizerMetadata, null, 2), - ) - }) - }, - } - } - function optimizerPluginRolldown(): Rollup.Plugin { - return { - name: 'vite-rsc-metafile', - writeBundle(options) { - assert(options.dir) - const optimizedFiles = [...this.getModuleIds()].map((id) => - path.relative(process.cwd(), id), - ) - optimizerMetadata = { optimizedFiles } - fs.writeFileSync( - path.join(options.dir!, EXTRA_OPTIMIZER_METADATA_FILE), - JSON.stringify(optimizerMetadata, null, 2), - ) - }, - } - } - return [ { name: 'rsc:use-client', - config() { - return { - environments: { - client: { - optimizeDeps: - 'rolldownVersion' in this.meta - ? ({ - rolldownOptions: { - plugins: [optimizerPluginRolldown()], - }, - } as any) - : { - esbuildOptions: { - plugins: [optimizerPluginEsbuild()], - }, - }, - }, - }, - } - }, - configResolved(config) { - if (config.command === 'serve') { - // load metadata file - // https://github.com/vitejs/vite/blob/84079a84ad94de4c1ef4f1bdb2ab448ff2c01196/packages/vite/src/node/optimizer/index.ts#L941 - const metadataFile = path.join( - config.cacheDir, - 'deps', - EXTRA_OPTIMIZER_METADATA_FILE, - ) - if (fs.existsSync(metadataFile)) { - try { - optimizerMetadata = JSON.parse( - fs.readFileSync(metadataFile, 'utf-8'), - ) - } catch (e) { - this.warn(`failed to load '${metadataFile}'`) - } - } - } - }, async transform(code, id) { if (this.environment.name !== serverEnvironmentName) return if (!code.includes('use client')) return @@ -1247,6 +1160,114 @@ function vitePluginUseClient( } }, }, + ...extraOptimizerMetadataPlugin({ + setMetadata: (metadata) => { + optimizerMetadata = metadata + }, + }), + ] +} + +type ExtraOptimizerMetadata = { + optimizedFiles: string[] +} + +function extraOptimizerMetadataPlugin({ + setMetadata, +}: { + setMetadata: (metadata: ExtraOptimizerMetadata) => void +}): Plugin[] { + const EXTRA_OPTIMIZER_METADATA_FILE = '_metadata-rsc-extra.json' + + type EsbuildPlugin = NonNullable< + NonNullable['plugins'] + >[number] + + function optimizerPluginEsbuild(): EsbuildPlugin { + return { + name: 'vite-rsc-metafile', + setup(build) { + build.onEnd((result) => { + // skip scan + if (!result.metafile?.inputs || !build.initialOptions.outdir) return + + const optimizedFiles = Object.keys(result.metafile.inputs) + const optimizerMetadata = { optimizedFiles } + setMetadata(optimizerMetadata) + fs.writeFileSync( + path.join( + build.initialOptions.outdir, + EXTRA_OPTIMIZER_METADATA_FILE, + ), + JSON.stringify(optimizerMetadata, null, 2), + ) + }) + }, + } + } + + function optimizerPluginRolldown(): Rollup.Plugin { + return { + name: 'vite-rsc-metafile', + writeBundle(options) { + assert(options.dir) + const optimizedFiles = [...this.getModuleIds()].map((id) => + path.relative(process.cwd(), id), + ) + const optimizerMetadata = { optimizedFiles } + setMetadata(optimizerMetadata) + fs.writeFileSync( + path.join(options.dir!, EXTRA_OPTIMIZER_METADATA_FILE), + JSON.stringify(optimizerMetadata, null, 2), + ) + }, + } + } + + return [ + { + name: 'rsc:use-client:optimizer-metadata', + config() { + return { + environments: { + client: { + optimizeDeps: + 'rolldownVersion' in this.meta + ? ({ + rolldownOptions: { + plugins: [optimizerPluginRolldown()], + }, + } as any) + : { + esbuildOptions: { + plugins: [optimizerPluginEsbuild()], + }, + }, + }, + }, + } + }, + configResolved(config) { + if (config.command === 'serve') { + // https://github.com/vitejs/vite/blob/84079a84ad94de4c1ef4f1bdb2ab448ff2c01196/packages/vite/src/node/optimizer/index.ts#L941 + const metadataFile = path.join( + config.cacheDir, + 'deps', + EXTRA_OPTIMIZER_METADATA_FILE, + ) + if (fs.existsSync(metadataFile)) { + try { + const optimizerMetadata = JSON.parse( + fs.readFileSync(metadataFile, 'utf-8'), + ) + setMetadata(optimizerMetadata) + } catch (e) { + this.warn(`failed to load '${metadataFile}'`) + } + } + } + }, + }, ] } From a2a4e82396500ce7c22044001deb9b0afd23f9d1 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 20 Aug 2025 11:25:03 +0900 Subject: [PATCH 10/12] refactor --- packages/plugin-rsc/src/plugin.ts | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 618424b51..c062aa739 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -1227,6 +1227,7 @@ function extraOptimizerMetadataPlugin({ return [ { name: 'rsc:use-client:optimizer-metadata', + apply: 'serve', config() { return { environments: { @@ -1248,22 +1249,20 @@ function extraOptimizerMetadataPlugin({ } }, configResolved(config) { - if (config.command === 'serve') { - // https://github.com/vitejs/vite/blob/84079a84ad94de4c1ef4f1bdb2ab448ff2c01196/packages/vite/src/node/optimizer/index.ts#L941 - const metadataFile = path.join( - config.cacheDir, - 'deps', - EXTRA_OPTIMIZER_METADATA_FILE, - ) - if (fs.existsSync(metadataFile)) { - try { - const optimizerMetadata = JSON.parse( - fs.readFileSync(metadataFile, 'utf-8'), - ) - setMetadata(optimizerMetadata) - } catch (e) { - this.warn(`failed to load '${metadataFile}'`) - } + // https://github.com/vitejs/vite/blob/84079a84ad94de4c1ef4f1bdb2ab448ff2c01196/packages/vite/src/node/optimizer/index.ts#L941 + const metadataFile = path.join( + config.cacheDir, + 'deps', + EXTRA_OPTIMIZER_METADATA_FILE, + ) + if (fs.existsSync(metadataFile)) { + try { + const optimizerMetadata = JSON.parse( + fs.readFileSync(metadataFile, 'utf-8'), + ) + setMetadata(optimizerMetadata) + } catch (e) { + this.warn(`failed to load '${metadataFile}'`) } } }, From 524ceffdd8f3fd231fbc5b70dff5e8fa829689d1 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 20 Aug 2025 11:27:47 +0900 Subject: [PATCH 11/12] refactor --- packages/plugin-rsc/src/plugin.ts | 45 +++++++++++++------------------ 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index c062aa739..dba4f5343 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -956,7 +956,7 @@ function vitePluginUseClient( const browserEnvironmentName = useClientPluginOptions.environment?.browser ?? 'client' - let optimizerMetadata: ExtraOptimizerMetadata | undefined + let optimizerMetadata: CustomOptimizerMetadata | undefined // TODO: warning for late optimizer discovery function warnInoncistentClientOptimization( @@ -966,7 +966,7 @@ function vitePluginUseClient( // path in metafile is relative to cwd // https://github.com/vitejs/vite/blob/dd96c2cd831ecba3874458b318ad4f0a7f173736/packages/vite/src/node/optimizer/index.ts#L644 id = normalizePath(path.relative(process.cwd(), id)) - if (optimizerMetadata?.optimizedFiles.includes(id)) { + if (optimizerMetadata?.ids.includes(id)) { ctx.warn( `client component dependency is inconsistently optimized. ` + `It's recommended to add the dependency to 'optimizeDeps.exclude'.`, @@ -1160,7 +1160,7 @@ function vitePluginUseClient( } }, }, - ...extraOptimizerMetadataPlugin({ + ...customOptimizerMetadataPlugin({ setMetadata: (metadata) => { optimizerMetadata = metadata }, @@ -1168,16 +1168,16 @@ function vitePluginUseClient( ] } -type ExtraOptimizerMetadata = { - optimizedFiles: string[] +type CustomOptimizerMetadata = { + ids: string[] } -function extraOptimizerMetadataPlugin({ +function customOptimizerMetadataPlugin({ setMetadata, }: { - setMetadata: (metadata: ExtraOptimizerMetadata) => void + setMetadata: (metadata: CustomOptimizerMetadata) => void }): Plugin[] { - const EXTRA_OPTIMIZER_METADATA_FILE = '_metadata-rsc-extra.json' + const MEATADATA_FILE = '_metadata-rsc.json' type EsbuildPlugin = NonNullable< NonNullable['plugins'] @@ -1191,14 +1191,11 @@ function extraOptimizerMetadataPlugin({ // skip scan if (!result.metafile?.inputs || !build.initialOptions.outdir) return - const optimizedFiles = Object.keys(result.metafile.inputs) - const optimizerMetadata = { optimizedFiles } + const ids = Object.keys(result.metafile.inputs) + const optimizerMetadata: CustomOptimizerMetadata = { ids } setMetadata(optimizerMetadata) fs.writeFileSync( - path.join( - build.initialOptions.outdir, - EXTRA_OPTIMIZER_METADATA_FILE, - ), + path.join(build.initialOptions.outdir, MEATADATA_FILE), JSON.stringify(optimizerMetadata, null, 2), ) }) @@ -1211,13 +1208,13 @@ function extraOptimizerMetadataPlugin({ name: 'vite-rsc-metafile', writeBundle(options) { assert(options.dir) - const optimizedFiles = [...this.getModuleIds()].map((id) => + const ids = [...this.getModuleIds()].map((id) => path.relative(process.cwd(), id), ) - const optimizerMetadata = { optimizedFiles } + const optimizerMetadata: CustomOptimizerMetadata = { ids } setMetadata(optimizerMetadata) fs.writeFileSync( - path.join(options.dir!, EXTRA_OPTIMIZER_METADATA_FILE), + path.join(options.dir!, MEATADATA_FILE), JSON.stringify(optimizerMetadata, null, 2), ) }, @@ -1250,19 +1247,13 @@ function extraOptimizerMetadataPlugin({ }, configResolved(config) { // https://github.com/vitejs/vite/blob/84079a84ad94de4c1ef4f1bdb2ab448ff2c01196/packages/vite/src/node/optimizer/index.ts#L941 - const metadataFile = path.join( - config.cacheDir, - 'deps', - EXTRA_OPTIMIZER_METADATA_FILE, - ) - if (fs.existsSync(metadataFile)) { + const file = path.join(config.cacheDir, 'deps', MEATADATA_FILE) + if (fs.existsSync(file)) { try { - const optimizerMetadata = JSON.parse( - fs.readFileSync(metadataFile, 'utf-8'), - ) + const optimizerMetadata = JSON.parse(fs.readFileSync(file, 'utf-8')) setMetadata(optimizerMetadata) } catch (e) { - this.warn(`failed to load '${metadataFile}'`) + this.warn(`failed to load '${file}'`) } } }, From e7411422dd1acbb17920dbbacf77900a88d25fd4 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Wed, 20 Aug 2025 11:30:17 +0900 Subject: [PATCH 12/12] refactor --- packages/plugin-rsc/src/plugin.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index dba4f5343..9ec4254e2 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -1192,11 +1192,11 @@ function customOptimizerMetadataPlugin({ if (!result.metafile?.inputs || !build.initialOptions.outdir) return const ids = Object.keys(result.metafile.inputs) - const optimizerMetadata: CustomOptimizerMetadata = { ids } - setMetadata(optimizerMetadata) + const metadata: CustomOptimizerMetadata = { ids } + setMetadata(metadata) fs.writeFileSync( path.join(build.initialOptions.outdir, MEATADATA_FILE), - JSON.stringify(optimizerMetadata, null, 2), + JSON.stringify(metadata, null, 2), ) }) }, @@ -1211,11 +1211,11 @@ function customOptimizerMetadataPlugin({ const ids = [...this.getModuleIds()].map((id) => path.relative(process.cwd(), id), ) - const optimizerMetadata: CustomOptimizerMetadata = { ids } - setMetadata(optimizerMetadata) + const metadata: CustomOptimizerMetadata = { ids } + setMetadata(metadata) fs.writeFileSync( path.join(options.dir!, MEATADATA_FILE), - JSON.stringify(optimizerMetadata, null, 2), + JSON.stringify(metadata, null, 2), ) }, } @@ -1250,8 +1250,8 @@ function customOptimizerMetadataPlugin({ const file = path.join(config.cacheDir, 'deps', MEATADATA_FILE) if (fs.existsSync(file)) { try { - const optimizerMetadata = JSON.parse(fs.readFileSync(file, 'utf-8')) - setMetadata(optimizerMetadata) + const metadata = JSON.parse(fs.readFileSync(file, 'utf-8')) + setMetadata(metadata) } catch (e) { this.warn(`failed to load '${file}'`) }