From f0cd32997ecf5acbb95dbeefdc41e922ada080f7 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Sat, 17 Apr 2021 17:50:03 +0200 Subject: [PATCH] fix(nitro): support vue-meta (compat) --- src/runtime/app/render.ts | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/src/runtime/app/render.ts b/src/runtime/app/render.ts index d764f4f8e2..89178a6bbb 100644 --- a/src/runtime/app/render.ts +++ b/src/runtime/app/render.ts @@ -71,14 +71,40 @@ function renderHTML (payload, rendered, ssrContext) { const state = `` const _html = rendered.html - const { htmlAttrs = '', bodyAttrs = '', headTags = '', headAttrs = '' } = - (ssrContext.head && ssrContext.head()) || {} + const meta = { + htmlAttrs: '', + bodyAttrs: '', + headAttrs: '', + headTags: '', + bodyTags: '' + } + + // @vueuse/head + if (typeof ssrContext.head === 'function') { + Object.assign(meta, ssrContext.head()) + } + + // vue-meta + if (ssrContext.meta && typeof ssrContext.meta.inject === 'function') { + const _meta = ssrContext.meta.inject({ + isSSR: ssrContext.nuxt.serverRendered, + ln: process.env.NODE_ENV === 'development' + }) + meta.htmlAttrs += _meta.htmlAttrs.text() + meta.headAttrs += _meta.headAttrs.text() + meta.bodyAttrs += _meta.bodyAttrs.text() + meta.headTags += + _meta.title.text() + _meta.meta.text() + + _meta.link.text() + _meta.style.text() + + _meta.script.text() + _meta.noscript.text() + // TODO: Body prepend/append tags + } return htmlTemplate({ - HTML_ATTRS: htmlAttrs, - HEAD_ATTRS: headAttrs, - BODY_ATTRS: bodyAttrs, - HEAD: headTags + + HTML_ATTRS: meta.htmlAttrs, + HEAD_ATTRS: meta.headAttrs, + BODY_ATTRS: meta.bodyAttrs, + HEAD: meta.headTags + rendered.renderResourceHints() + rendered.renderStyles() + (ssrContext.styles || ''), APP: _html + state + rendered.renderScripts() })