Skip to content

Layout Names ​

Layout names are normalized using Nuxt-compatible rules. meta.layout, defaultLayout and the generated layouts map all use these normalized names, never raw file paths.

Normalization Rules ​

  1. The file extension is dropped.
  2. Each path segment is converted to kebab-case.
  3. Nested paths are flattened with -.
  4. Overlapping segments between the directory and the filename are collapsed.
  5. An index filename resolves to its directory name.

Examples ​

FileLayout name
src/layouts/default.vuedefault
src/layouts/someLayout.vuesome-layout
src/layouts/desktop/default.vuedesktop-default
src/layouts/desktop/index.vuedesktop
src/layouts/desktop/Desktop.vuedesktop
src/layouts/desktop/DesktopDefault.vuedesktop-default
src/layouts/desktop-base/DesktopBase.vuedesktop-base

For clarity, prefer filenames that match the final layout name, such as DesktopDefault.vue, DesktopBase.vue, and Desktop.vue.

Using a Layout Name ​

src/pages/users.vue
vue
<route lang="yaml">
meta:
  layout: desktop-default
</route>

Breaking change in v3

Nested layouts used to keep slash-separated names such as sub/layoutsub. In v3 they are sub-layoutsub. See Migration.

Released under the MIT License.