@@ -26,6 +26,7 @@ export async function renderPage(
26
26
result : RollupOutput | null ,
27
27
appChunk : OutputChunk | undefined ,
28
28
cssChunk : OutputAsset | undefined ,
29
+ assets : string [ ] ,
29
30
pageToHashMap : Record < string , string > ,
30
31
hashMapString : string ,
31
32
siteDataString : string
@@ -86,21 +87,18 @@ export async function renderPage(
86
87
preloadLinks = preloadLinks . filter ( ( link ) => shouldPreload ( link , page ) )
87
88
}
88
89
89
- const preloadLinksString = preloadLinks
90
- . map ( ( file ) => {
91
- return `<link rel="modulepreload" href="${
92
- EXTERNAL_URL_RE . test ( file ) ? '' : siteData . base // don't add base to external urls
93
- } ${ file } ">`
94
- } )
95
- . join ( '\n ' )
90
+ const toHeadTags = ( files : string [ ] , rel : string ) : HeadConfig [ ] =>
91
+ files . map ( ( file ) => [
92
+ 'link' ,
93
+ {
94
+ rel,
95
+ // don't add base to external urls
96
+ href : ( EXTERNAL_URL_RE . test ( file ) ? '' : siteData . base ) + file
97
+ }
98
+ ] )
96
99
97
- const prefetchLinkString = prefetchLinks
98
- . map ( ( file ) => {
99
- return `<link rel="prefetch" href="${
100
- EXTERNAL_URL_RE . test ( file ) ? '' : siteData . base // don't add base to external urls
101
- } ${ file } ">`
102
- } )
103
- . join ( '\n ' )
100
+ const preloadHeadTags = toHeadTags ( preloadLinks , 'modulepreload' )
101
+ const prefetchHeadTags = toHeadTags ( prefetchLinks , 'prefetch' )
104
102
105
103
const stylesheetLink = cssChunk
106
104
? `<link rel="preload stylesheet" href="${ siteData . base } ${ cssChunk . fileName } " as="style">`
@@ -109,21 +107,27 @@ export async function renderPage(
109
107
const title : string = createTitle ( siteData , pageData )
110
108
const description : string = pageData . description || siteData . description
111
109
112
- const headBeforeTransform = mergeHead (
113
- siteData . head ,
114
- filterOutHeadDescription ( pageData . frontmatter . head )
115
- )
110
+ const headBeforeTransform = [
111
+ ...preloadHeadTags ,
112
+ ...prefetchHeadTags ,
113
+ ...mergeHead (
114
+ siteData . head ,
115
+ filterOutHeadDescription ( pageData . frontmatter . head )
116
+ )
117
+ ]
116
118
117
119
const head = mergeHead (
118
120
headBeforeTransform ,
119
121
( await config . transformHead ?.( {
122
+ page,
120
123
siteConfig : config ,
121
124
siteData,
122
125
pageData,
123
126
title,
124
127
description,
125
128
head : headBeforeTransform ,
126
- content
129
+ content,
130
+ assets
127
131
} ) ) || [ ]
128
132
)
129
133
@@ -165,8 +169,6 @@ export async function renderPage(
165
169
? `<script type="module" src="${ siteData . base } ${ appChunk . fileName } "></script>`
166
170
: ``
167
171
}
168
- ${ preloadLinksString }
169
- ${ prefetchLinkString }
170
172
${ await renderHead ( head ) }
171
173
</head>
172
174
<body>${ teleports ?. body || '' }
@@ -179,13 +181,15 @@ export async function renderPage(
179
181
180
182
await fs . ensureDir ( path . dirname ( htmlFileName ) )
181
183
const transformedHtml = await config . transformHtml ?.( html , htmlFileName , {
184
+ page,
182
185
siteConfig : config ,
183
186
siteData,
184
187
pageData,
185
188
title,
186
189
description,
187
190
head,
188
- content
191
+ content,
192
+ assets
189
193
} )
190
194
await fs . writeFile ( htmlFileName , transformedHtml || html )
191
195
}
0 commit comments