diff --git a/docs/content/2.guide/2.directory-structure/3.app.config.md b/docs/content/2.guide/2.directory-structure/3.app.config.md index 2dff2c0bef0..37c1d2ba92f 100644 --- a/docs/content/2.guide/2.directory-structure/3.app.config.md +++ b/docs/content/2.guide/2.directory-structure/3.app.config.md @@ -65,3 +65,15 @@ declare module '@nuxt/schema' { // It is always important to ensure you import/export something when augmenting a type export {} ``` + +## Defining Custom Root Element + +By default, Nuxt will mount your app inside a `#__nuxt` container. You may choose to customize the root element by defining another selector in your app config. + +**Example:** + +```ts [app.config.ts] +export default defineAppConfig({ + el: '#some-other-container' +}) +``` diff --git a/packages/nuxt/src/app/entry.ts b/packages/nuxt/src/app/entry.ts index f6a69e82e99..e6c9b77ba73 100644 --- a/packages/nuxt/src/app/entry.ts +++ b/packages/nuxt/src/app/entry.ts @@ -9,6 +9,8 @@ import '#build/css' import _plugins from '#build/plugins' // @ts-ignore import RootComponent from '#build/root-component.mjs' +// @ts-ignore +import appConfig from '#build/app.config.mjs' if (!globalThis.$fetch) { // @ts-ignore @@ -64,7 +66,8 @@ if (process.client) { try { await nuxt.hooks.callHook('app:created', vueApp) await nuxt.hooks.callHook('app:beforeMount', vueApp) - vueApp.mount('#__nuxt') + const el = appConfig.el ?? '#__nuxt' + vueApp.mount(el) await nuxt.hooks.callHook('app:mounted', vueApp) await nextTick() } catch (err) {