@@ -203,6 +203,23 @@ const writeFileSafe = async (file: string, contents: string): Promise<void> => {
203
203
await fse . writeFile ( file , contents ) ;
204
204
} ;
205
205
206
+ const getRouteManifestModuleExports = async (
207
+ viteChildCompiler : Vite . ViteDevServer | null ,
208
+ pluginConfig : ResolvedRemixVitePluginConfig
209
+ ) : Promise < Record < string , string [ ] > > => {
210
+ let entries = await Promise . all (
211
+ Object . entries ( pluginConfig . routes ) . map ( async ( [ key , route ] ) => {
212
+ let sourceExports = await getRouteModuleExports (
213
+ viteChildCompiler ,
214
+ pluginConfig ,
215
+ route . file
216
+ ) ;
217
+ return [ key , sourceExports ] as const ;
218
+ } )
219
+ ) ;
220
+ return Object . fromEntries ( entries ) ;
221
+ } ;
222
+
206
223
const getRouteModuleExports = async (
207
224
viteChildCompiler : Vite . ViteDevServer | null ,
208
225
pluginConfig : ResolvedRemixVitePluginConfig ,
@@ -390,13 +407,15 @@ export const remixVitePlugin: RemixVitePlugin = (options = {}) => {
390
407
) ;
391
408
392
409
let routes : Manifest [ "routes" ] = { } ;
410
+
411
+ let routeManifestExports = await getRouteManifestModuleExports (
412
+ viteChildCompiler ,
413
+ pluginConfig
414
+ ) ;
415
+
393
416
for ( let [ key , route ] of Object . entries ( pluginConfig . routes ) ) {
394
417
let routeFilePath = path . join ( pluginConfig . appDirectory , route . file ) ;
395
- let sourceExports = await getRouteModuleExports (
396
- viteChildCompiler ,
397
- pluginConfig ,
398
- route . file
399
- ) ;
418
+ let sourceExports = routeManifestExports [ key ] ;
400
419
401
420
routes [ key ] = {
402
421
id : route . id ,
@@ -434,13 +453,13 @@ export const remixVitePlugin: RemixVitePlugin = (options = {}) => {
434
453
let pluginConfig = await resolvePluginConfig ( ) ;
435
454
let routes : Manifest [ "routes" ] = { } ;
436
455
437
- for ( let [ key , route ] of Object . entries ( pluginConfig . routes ) ) {
438
- let sourceExports = await getRouteModuleExports (
439
- viteChildCompiler ,
440
- pluginConfig ,
441
- route . file
442
- ) ;
456
+ let routeManifestExports = await getRouteManifestModuleExports (
457
+ viteChildCompiler ,
458
+ pluginConfig
459
+ ) ;
443
460
461
+ for ( let [ key , route ] of Object . entries ( pluginConfig . routes ) ) {
462
+ let sourceExports = routeManifestExports [ key ] ;
444
463
routes [ key ] = {
445
464
id : route . id ,
446
465
parentId : route . parentId ,
0 commit comments