From 991b015c2e6f472df155590f81a466bd4c1bcc3c Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Sat, 18 Oct 2025 15:37:31 +0900 Subject: [PATCH] fix(rsc): fix false detecting `import.meta.viteRsc` API inside comment --- packages/plugin-rsc/package.json | 1 + packages/plugin-rsc/src/plugin.ts | 7 ++++--- pnpm-lock.yaml | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/plugin-rsc/package.json b/packages/plugin-rsc/package.json index 54c176fdd..cb7f7ddef 100644 --- a/packages/plugin-rsc/package.json +++ b/packages/plugin-rsc/package.json @@ -44,6 +44,7 @@ "estree-walker": "^3.0.3", "magic-string": "^0.30.19", "periscopic": "^4.0.2", + "strip-literal": "^3.1.0", "turbo-stream": "^3.1.0", "vitefu": "^1.1.1" }, diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index 1dd69d51a..0de3a139a 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -55,6 +55,7 @@ import { scanBuildStripPlugin } from './plugins/scan' import { validateImportPlugin } from './plugins/validate-import' import { vitePluginFindSourceMapURL } from './plugins/find-source-map-url' import { parseCssVirtual, toCssVirtual, parseIdQuery } from './plugins/shared' +import { stripLiteral } from 'strip-literal' const isRolldownVite = 'rolldownVersion' in vite @@ -702,7 +703,7 @@ export default function vitePluginRsc( if (!code.includes('import.meta.viteRsc.loadModule')) return const { server } = manager const s = new MagicString(code) - for (const match of code.matchAll( + for (const match of stripLiteral(code).matchAll( /import\.meta\.viteRsc\.loadModule\(([\s\S]*?)\)/dg, )) { const argCode = match[1]!.trim() @@ -973,7 +974,7 @@ export default assetsManifest.bootstrapScriptContent; assert(this.environment.name !== 'client') const output = new MagicString(code) - for (const match of code.matchAll( + for (const match of stripLiteral(code).matchAll( /import\s*\.\s*meta\s*\.\s*viteRsc\s*\.\s*loadBootstrapScriptContent\(([\s\S]*?)\)/dg, )) { const argCode = match[1]!.trim() @@ -2087,7 +2088,7 @@ function vitePluginRscCss( const output = new MagicString(code) let importAdded = false - for (const match of code.matchAll( + for (const match of stripLiteral(code).matchAll( /import\.meta\.viteRsc\.loadCss\(([\s\S]*?)\)/dg, )) { const [start, end] = match.indices![0]! diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d415cb006..d27c5cba8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -451,6 +451,9 @@ importers: periscopic: specifier: ^4.0.2 version: 4.0.2 + strip-literal: + specifier: ^3.1.0 + version: 3.1.0 turbo-stream: specifier: ^3.1.0 version: 3.1.0