Skip to content

Commit 074c755

Browse files
committed
refactor
1 parent f20f300 commit 074c755

File tree

2 files changed

+24
-14
lines changed

2 files changed

+24
-14
lines changed

packages/plugin-rsc/src/plugin.ts

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import {
4040
import { cjsModuleRunnerPlugin } from './plugins/cjs'
4141
import { evalValue, parseIdQuery } from './plugins/utils'
4242
import { createDebug } from '@hiogawa/utils'
43+
import { transformScanBuildStrip } from './plugins/scan'
4344

4445
// state for build orchestration
4546
let serverReferences: Record<string, string> = {}
@@ -901,9 +902,6 @@ globalThis.AsyncLocalStorage = __viteRscAyncHooks.AsyncLocalStorage;
901902
]
902903
}
903904

904-
// https://github.com/vitejs/vite/blob/86d2e8be50be535494734f9f5f5236c61626b308/packages/vite/src/node/plugins/importMetaGlob.ts#L113
905-
const importGlobRE = /\bimport\.meta\.glob(?:<\w+>)?\s*\(/g
906-
907905
// During scan build, we strip all code but imports to
908906
// traverse module graph faster and just discover client/server references.
909907
function scanBuildStripPlugin(): Plugin {
@@ -914,17 +912,10 @@ function scanBuildStripPlugin(): Plugin {
914912
transform(code, _id, _options) {
915913
if (!isScanBuild) return
916914

917-
// bail out if import.meta.glob
918-
// https://github.com/vitejs/rolldown-vite/issues/373
919-
if (importGlobRE.test(code)) return
920-
921-
const [imports] = esModuleLexer.parse(code)
922-
let output = imports
923-
.map((e) => e.n && `import ${JSON.stringify(e.n)};\n`)
924-
.filter(Boolean)
925-
.join('')
926-
output += 'module.exports = {};\n'
927-
return { code: output, map: { mappings: '' } }
915+
const output = transformScanBuildStrip(code)
916+
if (output) {
917+
return { code: output, map: { mappings: '' } }
918+
}
928919
},
929920
}
930921
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import * as esModuleLexer from 'es-module-lexer'
2+
3+
// https://github.com/vitejs/vite/blob/86d2e8be50be535494734f9f5f5236c61626b308/packages/vite/src/node/plugins/importMetaGlob.ts#L113
4+
const importGlobRE = /\bimport\.meta\.glob(?:<\w+>)?\s*\(/g
5+
6+
export function transformScanBuildStrip(code: string): string | undefined {
7+
// bail out if import.meta.glob
8+
// https://github.com/vitejs/rolldown-vite/issues/373
9+
if (importGlobRE.test(code)) return
10+
11+
const [imports] = esModuleLexer.parse(code)
12+
let output = imports
13+
.map((e) => e.n && `import ${JSON.stringify(e.n)};\n`)
14+
.filter(Boolean)
15+
.join('')
16+
output += 'module.exports = {};\n'
17+
18+
return output
19+
}

0 commit comments

Comments
 (0)