diff --git a/packages/vite/src/node/plugins/html.ts b/packages/vite/src/node/plugins/html.ts
index 9d06d6e168f2e1..a66a6288f8e8c2 100644
--- a/packages/vite/src/node/plugins/html.ts
+++ b/packages/vite/src/node/plugins/html.ts
@@ -767,11 +767,6 @@ export async function applyHtmlTransforms(
hooks: IndexHtmlTransformHook[],
ctx: IndexHtmlTransformContext
): Promise {
- const headTags: HtmlTagDescriptor[] = []
- const headPrependTags: HtmlTagDescriptor[] = []
- const bodyTags: HtmlTagDescriptor[] = []
- const bodyPrependTags: HtmlTagDescriptor[] = []
-
for (const hook of hooks) {
const res = await hook(html, ctx)
if (!res) {
@@ -787,6 +782,12 @@ export async function applyHtmlTransforms(
html = res.html || html
tags = res.tags
}
+
+ const headTags: HtmlTagDescriptor[] = []
+ const headPrependTags: HtmlTagDescriptor[] = []
+ const bodyTags: HtmlTagDescriptor[] = []
+ const bodyPrependTags: HtmlTagDescriptor[] = []
+
for (const tag of tags) {
if (tag.injectTo === 'body') {
bodyTags.push(tag)
@@ -798,21 +799,12 @@ export async function applyHtmlTransforms(
headPrependTags.push(tag)
}
}
- }
- }
- // inject tags
- if (headPrependTags.length) {
- html = injectToHead(html, headPrependTags, true)
- }
- if (headTags.length) {
- html = injectToHead(html, headTags)
- }
- if (bodyPrependTags.length) {
- html = injectToBody(html, bodyPrependTags, true)
- }
- if (bodyTags.length) {
- html = injectToBody(html, bodyTags)
+ html = injectToHead(html, headPrependTags, true)
+ html = injectToHead(html, headTags)
+ html = injectToBody(html, bodyPrependTags, true)
+ html = injectToBody(html, bodyTags)
+ }
}
return html
@@ -859,6 +851,8 @@ function injectToHead(
tags: HtmlTagDescriptor[],
prepend = false
) {
+ if (tags.length === 0) return html
+
if (prepend) {
// inject as the first element of head
if (headPrependInjectRE.test(html)) {
@@ -893,6 +887,8 @@ function injectToBody(
tags: HtmlTagDescriptor[],
prepend = false
) {
+ if (tags.length === 0) return html
+
if (prepend) {
// inject after body open
if (bodyPrependInjectRE.test(html)) {