Skip to content

Commit 78f737c

Browse files
perf: render pages in parallel (#1094)
1 parent 86cc157 commit 78f737c

File tree

2 files changed

+33
-39
lines changed

2 files changed

+33
-39
lines changed

packages/bundler-vite/src/build/build.ts

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { CreateVueAppFunction } from '@vuepress/client'
22
import type { App, Bundler } from '@vuepress/core'
3-
import { colors, debug, fs, importFile, withSpinner } from '@vuepress/utils'
3+
import { debug, fs, importFile, withSpinner } from '@vuepress/utils'
44
import type { OutputAsset, OutputChunk, RollupOutput } from 'rollup'
55
import { build as viteBuild } from 'vite'
66
import { resolveViteConfig } from '../resolveViteConfig.js'
@@ -73,20 +73,21 @@ export const build = async (
7373
const { renderToString } = await import('vue/server-renderer')
7474

7575
// pre-render pages to html files
76-
for (const page of app.pages) {
77-
if (spinner) spinner.text = `Rendering pages ${colors.magenta(page.path)}`
78-
await renderPage({
79-
app,
80-
page,
81-
vueApp,
82-
vueRouter,
83-
renderToString,
84-
ssrTemplate,
85-
output: clientOutput.output,
86-
outputEntryChunk: clientEntryChunk,
87-
outputCssAsset: clientCssAsset,
88-
})
89-
}
76+
await Promise.all(
77+
app.pages.map((page) =>
78+
renderPage({
79+
app,
80+
page,
81+
vueApp,
82+
vueRouter,
83+
renderToString,
84+
ssrTemplate,
85+
output: clientOutput.output,
86+
outputEntryChunk: clientEntryChunk,
87+
outputCssAsset: clientCssAsset,
88+
})
89+
)
90+
)
9091
})
9192

9293
// keep the server bundle files in debug mode

packages/bundler-webpack/src/build/build.ts

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
import type { CreateVueAppFunction } from '@vuepress/client'
22
import type { App, Bundler } from '@vuepress/core'
3-
import {
4-
colors,
5-
debug,
6-
fs,
7-
importFileDefault,
8-
withSpinner,
9-
} from '@vuepress/utils'
3+
import { debug, fs, importFileDefault, withSpinner } from '@vuepress/utils'
104
import webpack from 'webpack'
115
import { resolveWebpackConfig } from '../resolveWebpackConfig.js'
126
import type { WebpackBundlerOptions } from '../types.js'
@@ -96,23 +90,22 @@ export const build = async (
9690
const { renderToString } = await import('vue/server-renderer')
9791

9892
// pre-render pages to html files
99-
for (const page of app.pages) {
100-
if (spinner) {
101-
spinner.text = `Rendering pages ${colors.magenta(page.path)}`
102-
}
103-
await renderPage({
104-
app,
105-
page,
106-
vueApp,
107-
vueRouter,
108-
renderToString,
109-
ssrTemplate,
110-
allFilesMeta,
111-
initialFilesMeta,
112-
asyncFilesMeta,
113-
moduleFilesMetaMap,
114-
})
115-
}
93+
await Promise.all(
94+
app.pages.map((page) =>
95+
renderPage({
96+
app,
97+
page,
98+
vueApp,
99+
vueRouter,
100+
renderToString,
101+
ssrTemplate,
102+
allFilesMeta,
103+
initialFilesMeta,
104+
asyncFilesMeta,
105+
moduleFilesMetaMap,
106+
})
107+
)
108+
)
116109
})
117110

118111
// keep the server bundle files in debug mode

0 commit comments

Comments
 (0)