function getDevSsrTemplateFn (template, quasarConf) {
  const compiled = compileTemplate(template)

  let html = compiled(quasarConf.htmlVariables)

  // publicPath will be handled by Vite middleware
  // if src/href are not relative, which is what we need
  html = injectPublicPath(html, '/')
  html = injectSsrRuntimeInterpolation(html)

  if (quasarConf.metaConf.vueDevtools !== false) {
    html = injectVueDevtools(html, quasarConf.metaConf.vueDevtools, '{{ ssrContext.nonce ? \' nonce="\' + ssrContext.nonce + \'"\' : \'\' }}')
  }

  html = html.replace(
    entryPointMarkup,
    `${ entryPointMarkup }${ quasarConf.metaConf.entryScript.tag }`
  )

  return compileTemplate(html, { interpolate: ssrInterpolationsRE, variable: 'ssrContext' })
}
Used by dev SSR only

const fn = getDevSsrTemplateFn(indexHtmlFileContent, quasarConf)

// ...at runtime:
let html = fn(ssrContext)
html = await vite.transformIndexHtml(html)
html = html.replace('<!-- quasar:entry-point -->', '<div id="q-app">...</div>')