Skip to content

Commit f0f675c

Browse files
perf(remix-dev/vite): extract route module exports in parallel (#8111)
Co-authored-by: Mark Dalgleish <[email protected]>
1 parent 7ad2c82 commit f0f675c

File tree

1 file changed

+30
-11
lines changed

1 file changed

+30
-11
lines changed

packages/remix-dev/vite/plugin.ts

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,23 @@ const writeFileSafe = async (file: string, contents: string): Promise<void> => {
203203
await fse.writeFile(file, contents);
204204
};
205205

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+
206223
const getRouteModuleExports = async (
207224
viteChildCompiler: Vite.ViteDevServer | null,
208225
pluginConfig: ResolvedRemixVitePluginConfig,
@@ -390,13 +407,15 @@ export const remixVitePlugin: RemixVitePlugin = (options = {}) => {
390407
);
391408

392409
let routes: Manifest["routes"] = {};
410+
411+
let routeManifestExports = await getRouteManifestModuleExports(
412+
viteChildCompiler,
413+
pluginConfig
414+
);
415+
393416
for (let [key, route] of Object.entries(pluginConfig.routes)) {
394417
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];
400419

401420
routes[key] = {
402421
id: route.id,
@@ -434,13 +453,13 @@ export const remixVitePlugin: RemixVitePlugin = (options = {}) => {
434453
let pluginConfig = await resolvePluginConfig();
435454
let routes: Manifest["routes"] = {};
436455

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+
);
443460

461+
for (let [key, route] of Object.entries(pluginConfig.routes)) {
462+
let sourceExports = routeManifestExports[key];
444463
routes[key] = {
445464
id: route.id,
446465
parentId: route.parentId,

0 commit comments

Comments
 (0)