Reputation: 385
Sorry if this is asked, just not sure what to search for. Is there a way to change the template that's used to generate the index.html file when building a Nuxt app in spa mode?
Upvotes: 22
Views: 25356
Reputation: 10512
Nuxt3
A long-awaited solution as a result of https://github.com/nuxt/nuxt/issues/14195 discussion.
Create a file in server/plugins/extend-html.ts
(yes, server/plugins
folder, not just plugins
in root)
export default defineNitroPlugin((nitroApp) => {
nitroApp.hooks.hook('render:html', (html, { event }) => {
html.head.push(
`<script async src='https://www.googletagmanager.com/gtag/js?id=AW-123456789'></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'AW-123456789');</script>`,
)
})
})
as per https://nuxt.com/docs/guide/directory-structure/server#server-plugins it'll automatically import to your file while doing nuxi build
. It's in server
, so can't promise it'll work for nuxi generate
.
Upvotes: 6
Reputation: 3820
Like @Ohgodwhy
said There is no index.html
with nuxt.
Nuxt 3 :
You can use defineNuxtConfig to fill the head for your whole application
Or you can use useHead in your pages to define programmatically the head of you page and those values can also be reactive.
Nuxt 2 :
You can change everything that you want with vue-meta
that is used by default in nuxt see more : https://nuxtjs.org/api/pages-head/
Upvotes: 1
Reputation: 5556
For overwriting the .nuxt/views/app.template.html
, you need to create app.html
file at the root of the project. You can then, copy-paste the general content from app.template.html
and start modifying things.
For eg - I have to add the lang
attribute to the html
tag, so I have updated the code a bit in my app.html
app.html
<!DOCTYPE html>
<html lang="en" {{ HTML_ATTRS }}>
<head {{ HEAD_ATTRS }}>
{{ HEAD }}
</head>
<body {{ BODY_ATTRS }}>
{{ APP }}
</body>
</html>
Upvotes: 28